在PHP中反转整个日期

时间:2012-04-01 06:03:56

标签: php date

行,

我正在使用以下代码来反转昨天在php中使用的日期。

<?php
$d=date("F j Y");
$d=explode(" ", $d);
$month=$d[0];
$day=$d[1];
$year=$d[2];
<?php for ($i=10; $i>0; $i--)
{
      $date=$month."-".$day--."-".$year;
      echo $date;
?>
直到昨天3月31日晚上,这对我有用。但是在4月1日早上开始印刷

  

April-1-2012

     

April-0-2012

     

4月 - 2012年4月1日至2012年2月2日

     

等等。

这是我用来扭转约会的错误逻辑。我很快就意识到了。 我想这就像以下一样。

  

April-1-2012

     

2012年3月31日

     

2012年3月30日

     

三月-29-2012

     

等等

那怎么可能呢?

提前致谢。


嗯,这也是一个对我有用的逻辑,我在发帖后提出。但我非常感谢所有答案。这也让我很清楚。

<?php
$d=date("F j Y");
 for ($i=0; $i>-10; $i--)
 {
$date="<br>".date('F-j-Y', strtotime("+$i days"));
echo $date;
}
?>

3 个答案:

答案 0 :(得分:3)

这可能是最快捷的方式

for($i=1; $i <= 10; $i++) {
    echo date("F j Y", time()-($i*24*60*60)); //Instead of 24*60*60 write 86400 to increase slight performance
}

Demo

答案 1 :(得分:2)

要逐步减少:

$date = date("F j Y");

for ($i = 0; $i < 10; ++$i)
{
  $dates[] = date("F-j-Y", strtotime($date . ' - ' . $i . ' day'));
}

答案 2 :(得分:1)

如果您使用的是PHP5.2,则可以使用DateTime类和修改方法。

http://www.php.net/manual/en/datetime.modify.php

<?php
$date = new DateTime('2006-12-12');
$date->modify('-1 day');
echo $date->format('F-j-Y');
?>

在5.3中,您可以在DateTime类中使用sub方法:http://www.php.net/manual/en/datetime.sub.php

<?php
$date = new DateTime('2000-01-20');
$date->sub(new DateInterval('P1D'));
echo $date->format('F-j-Y');
?>

这是一个例子,使用PHP 5.2 DateTime类(例如:http://ideone.com/uwkjj):

$date = new DateTime();
echo $date->format('F-j-Y');
for($i = 0; $i < 10; $i++){
    $date->modify('-1 day');
    echo $date->format('F-j-Y');
}

以下是使用PHP5.3 DateTime类和子方法

的示例
$date = new DateTime();
echo $date->format('F-j-Y');
for($i = 0; $i < 9; $i++){
    $date->sub(new DateInterval('P1D'));
    echo $date->format('F-j-Y');
}

在strtotime的PHP帮助页面上还有一个有趣的注释:http://www.php.net/manual/en/function.strtotime.php表示不会将其用于数学运算。我想知道这意味着什么。但我想减去1天应该没问题。

从PHP手册:

  

不建议使用此函数进行数学运算。它   最好在PHP 5.3和中使用DateTime :: add()和DateTime :: sub()   稍后,或PHP 5.2中的DateTime :: modify()。