PHP - 给日期格式 mm-dd-yyyy 加上一天

59
<?php
    $date = "04-15-2013";
    $date = strtotime($date);
    $date = strtotime("+1 day", $date);
    echo date('m-d-Y', $date);
?>

这让我很疑惑,看起来很简单。我对PHP比较陌生,但是我无法解决。echo返回的是01-01-1970

$date将以m-d-Y格式从POST获取,我需要添加一天并将其作为新变量以便以后使用。

我需要将$date转换为Y-m-d,再加上1天,然后再转换回m-d-Y吗?还是学习如何使用DateTime会更好呢?


如果你的日期是从 POST 中传递过来的,那么在你的数据收集脚本中最好使用 $tomorrow = date('m-d-Y',strtotime("+1 days"));(Fabio 的答案)和 $tomorrow = $_POST[$tomorrow]; - Funk Forty Niner
6个回答

130

就是这样了

$date = "04-15-2013";
$date1 = str_replace('-', '/', $date);
$tomorrow = date('m-d-Y',strtotime($date1 . "+1 days"));

echo $tomorrow;

这将输出

04-16-2013

这是两个函数的文档
date
strtotime


太好了!我不知道它不会识别“-”。我完全可以把所有的都改成“/”,没有问题。谢谢! - Jayr

63
$date = DateTime::createFromFormat('m-d-Y', '04-15-2013');
$date->modify('+1 day');
echo $date->format('m-d-Y');

在此处查看演示

或在PHP 5.4+中使用

echo (DateTime::createFromFormat('m-d-Y', '04-15-2013'))->modify('+1 day')->format('m-d-Y');

参考


17
$date = strtotime("+1 day");
echo date('m-d-y',$date);

3

1
您使用的格式无法被strtotime()识别。请更换。
$date = "04-15-2013";

$date = "04/15/2013";

如果您想使用-,请在年份前使用以下行:

$date = "2013-04-15";

1

实际上,我想要的是同样的事情,为了给定的日期得到一年前的日期! :-)

在@mohammad mohsenipur的上面答案的提示下,我通过他给出的链接找到了以下link

幸运的是,有一个与date_add方法相同的方法,名为date_sub方法! :-) 我做以下来完成我想要的!

$date = date_create('2000-01-01');
date_sub($date, date_interval_create_from_date_string('1 years'));
echo date_format($date, 'Y-m-d');

希望这个回答也能帮助到其他人!:-) 祝你们好运!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接