我想对格式为“2016 年 1 月 21 日”的日期字符串使用 datetime->modify 函数。当我使用 datetime->modify 并添加 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");
?>
结果是:
2017 年 4 月 30 日
想要的结果
2016 年 1 月 22 日
最佳答案
问题是您正在尝试从非 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);
关于php - 修改 DateTime on Month 短名称格式的日期字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34828322/