Jump to content

Recommended Posts

Dear Team,

I am having a input field which is using for select month. 

<?PHP
  $previous_month = date('Y-m', strtotime(date('Y-m') . " -1 month"));
        $current_month = date('Y-m');

?>


 <input type="month" name="Month" id="Month" class="form-control" onchange="viewData()" min="<?php echo $previous_month; ?>" max="<?php echo $current_month; ?>" required style="width:auto;font-family:Cambria;border-radius:5px;height:30px" />

This input will display previous month and cutrrent month only. 

When i am checking the output of this input is working properly on my laptop browser, i can able to select both the month. But when ia m checking the output on my mobile browser, i can select only current month. ie.. max value. If i scroll down the month list, again it is going to max value only.

If suppose the minimum value is -2 (ie.. 2month ) then i can able to select on my mobile browser. But when i am ggiven one month i am not able to select previous month.

 

Can any one suggest me where is the mistake and how to rectify this issue.

9 hours ago, Barand said:
$previous_month = date('Y-m', strtotime("-1 month"));

 

Careful with dates like March 30th...

Easiest method I know: date + mktime.

$previous_month = date('Y-m', mktime(0, 0, 0, date('n') - 1, 1));

 

Or, if you just really like to over-engineer things:

echo (new DateTime('now', new DateTimezone('America/New_York')))->sub(new DateInterval('P1M'))->format('M j, Y');

As dumb as it may sound given the length of this statement versus requinix and Barand's answers, this is easier for my brain to read.

Edited by maxxd

I changed the code as per your instruction. But when i am selecting the month from system browser it is displaying like below image

image.png.73b6bb7d7eac36831c897dd35cc33f27.png

 

When i am selecting month from mobile browser it is displaying like below image

image.png.56cf71e69a45a86cdad57aa358ee44be.png

In above screen, when i am scroll down the month i am not able to select May month. Automatically it is going to Jun if i scroll it.

 

Continuing a long history of over-engineering because it reads easier to my particular brain:

echo (new DateTime('first day of last month', new DateTimeZone('America/New_York')))->format('M j, Y');

Returns 'May 1, 2023' which, as of today, is correct. Thanks @Barand and @requinix.

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.