使用php strtotime()计算未来日期不给出正确答案

时间:2013-02-07 04:33:52

标签: php

我希望在特定日期之后获得未来日期 为此我使用strtotime()函数,但它对我不起作用

然后我使用以下代码

$d1='2012-11-08';
$d2=date($d1, strtotime('+3 days'));    
echo $d2;   

输出是      2012年11月8日      2012年11月8日

不     2012年11月11日

但输出不是2012-11-11 输出是2012-11-08 我无法解决这个错误我做了什么以及我如何解决这个问题?

5 个答案:

答案 0 :(得分:3)

$d1='2012-11-08';
$d2=new DateTime($d1);
$d2->modify('+3 day');

echo $d2->format('Y-m-d');

答案 1 :(得分:1)

尝试使用date_add

$d1 = '2012-11-08';
$d2 = date_add($d1, date_interval_create_from_date_string('3 days'));
echo $d2;

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

如果你没有运行PHP 5.3,这应该可行:

$d1 = '2012-11-08';
$d2 = strtotime('+3 days', strtotime($d1));    
echo date('Y-m-d', $d2);  

答案 2 :(得分:1)

实际上你错误地添加了strtotime(),它在你使用当前日期时有效,如果你想添加自定义日期,你可以试试这个,

<?php
 $d1='2012-11-08';
 $d2 = strtotime ( '+3 day' , strtotime ( $d1 ) ) ;
 $d3 = date ( 'Y-m-d' , $d2);
?>

如果您想从当前日期添加日期,请使用以下

$d1 = Date('Y-m-d', strtotime("+3 days"));

答案 3 :(得分:1)

您错误地使用了date()功能。根据{{​​3}},date()采用格式字符串,后跟可选的时间戳。你给它一个日期字符串和另一个日期。

您可以执行此操作,其中strtotime用于修改日期,

$date = "2012-11-08";
echo date("Y-m-d", strtotime($date. " + 3 days"));

但是如果你运行PHP 5.2+,你应该使用documentation类,因为它有更好的日期处理,并且更容易看到它正在发生什么。

$datetime = new DateTime("2012-11-08");
$datetime->modify("+ 3 days");    
echo $datetime->format("Y-m-d");

答案 4 :(得分:0)

虽然strtotime()是一个方便的工具,但它很容易出现语言环境问题。

我会使用PHP的成熟DateTime类,例如

$dt = new DateTime($d1);
echo $dt->add(new DateInterval('P3D'))->format('Y-m-d');