【发布时间】:2016-05-25 12:51:18
【问题描述】:
我的日期格式如下"2000-5-1"。第一个数字代表 4 位数年份。第二个是一年中的周数,最后一个是周数。
无论我做什么,函数总是返回false,我的代码如下:
date_create_from_format("Y-W-N", "2000-5-1")
(docs)
请避免使用“+1 天”等魔法词的解决方案。
【问题讨论】:
我的日期格式如下"2000-5-1"。第一个数字代表 4 位数年份。第二个是一年中的周数,最后一个是周数。
无论我做什么,函数总是返回false,我的代码如下:
date_create_from_format("Y-W-N", "2000-5-1")
(docs)
请避免使用“+1 天”等魔法词的解决方案。
【问题讨论】:
PHP 文档的supported date and time formats 部分的compound formats 部分描述了从具有年/周/日的复合格式创建 DateTime 对象:
$x = new DateTime("2000-W05-1");
var_dump($x);
请注意,周数需要前导零
结果是 2000-01-31 的 DateTime 对象
【讨论】:
如果您查看 DateTime::createFromFormat(这是您使用的别名)和 date() 的文档,格式没有 100% 重叠,所以您遇到了问题。
这是我发现您可以使用的替代方法:DateTime::setISODate
$date = explode('-','2000-5-1');
$newDate = new DateTime();
$newDate->setISODate($date[0], $date[1], $date[2]);
setISODate 将按照文档中的说明使用年、周和日来创建 DateTime 对象。
【讨论】: