我想在日期字符串上使用datetime-> modify函数,格式为“2016年1月21日”。当我使用datetime->修改并添加1天时,它给出了2017年4月30日的结果。我知道如果我不使用短月份名称而是使用数字(即01),它将起作用很好,但我想以短月名称这样做。这可能吗?
请参阅以下代码:
<?php
$date = "21 Jan 2016"; // this is my date string
$newdate = new DateTime($date );
$date2 = $newdate->modify('+1 day'); // add 1 day to date string
echo $date2->format("d-M-Y");
?>
结果是:
30-APR-2017
结果通缉
22-JAN-2016
答案 0 :(得分:2)
问题是您正在尝试从非ISO格式创建DateTime对象。那部分不起作用。
看看:http://php.net/manual/ro/datetime.createfromformat.php
你需要像
这样的东西DateTime::createFromFormat('d M Y', '21 Jan 2016');
完整示例:
$tomorrow = DateTime::createFromFormat('d M Y', '21 Jan 2016')->modify('+1 day')->format("d-M-Y");
echo($tomorrow);
答案 1 :(得分:0)
$date
变量的格式不正确。在我的脑海中,有两种简单的方法可以解决这个问题:
$date = "Jan 21, 2016"
$date = "21-Jan 2016"
您的日期格式错误。就是这样。