php strtotime上个月最后一天函数产生2个月前

时间:2017-03-01 06:51:55

标签: php date

根据服务器:

src/main/resources

的php.ini

 $ date
 Wed Mar  1 01:46:06 EST 2017

当我这样做时,我得到一个奇怪的结果:

 date.timezone = America/New_York

结果是:

 $month = date('M',strtotime('last day last month'));
 $sel = "SELECT records where month='".$month."'";
 echo $sel;

任何想法为什么不是2月?

4 个答案:

答案 0 :(得分:4)

使用“下个月”,“上个月”,“1个月”,“ - 1个月”或+/- X个月的任意组合时。

它将在1月30日和31日给出非直观的结果。

如下所述:http://derickrethans.nl/obtaining-the-next-month-in-php.html

<?php
    $d = new DateTime( '2010-01-31' );
    $d->modify( 'next month' );
    echo $d->format( 'F' ), "\n";
?>

在上面,使用1月31日的“下个月”将输出“March”,即使您可能希望输出“February”。

(“+ 1个月”将给出相同的结果。“上个月”,“ - 1个月”同样受到影响,但结果将在3月初看到。)

即使在1月30日和1月31日他们说“下个月”时人们通常会想要的方法是使用“下个月的第一天”:

<?php
    $d = new DateTime( '2010-01-08' );
    $d->modify( 'first day of next month' );
    echo $d->format( 'F' ), "\n";
?>


<?php
    $d = new DateTime( '2010-01-08' );
    $d->modify( 'first day of +1 month' );
    echo $d->format( 'F' ), "\n";
?>

答案 1 :(得分:0)

你可以试试上个月而不是上个月吗?

  $month = date('M',strtotime('last day of previous month')); 

答案 2 :(得分:0)

如果你想上个月使用代码

$month = date('M',strtotime('last month'));

$sel = "SELECT records where month='".$month."'";

echo $sel;

结果:

SELECT records where month='Feb'

答案 3 :(得分:0)

// previous month
echo date("F t, Y", strtotime("last month"));

// two months ago
echo date("F t, Y", strtotime("last month -1 month"));