我有一个oW
格式的日期。这是 ISO 8601 格式的 4 位数年份,后跟周数。例如,201301 表示从 2012 年 12 月 31 日星期一开始的一周。
如何将其转换回时间戳。从时间戳到字符串适用于date('oW',$ts)
. 我该如何倒退?我有兴趣以 oW 格式表示一周中的星期一。如果 PHP 提供了一种单向的方法,但不考虑逆向,那将是非常愚蠢的。
我有一个oW
格式的日期。这是 ISO 8601 格式的 4 位数年份,后跟周数。例如,201301 表示从 2012 年 12 月 31 日星期一开始的一周。
如何将其转换回时间戳。从时间戳到字符串适用于date('oW',$ts)
. 我该如何倒退?我有兴趣以 oW 格式表示一周中的星期一。如果 PHP 提供了一种单向的方法,但不考虑逆向,那将是非常愚蠢的。
ISO 8601 需要以下格式的星期日期:
YYYY\WWW
例如:
2012W52
是 2012 年第 52 周的开始,实际上是 2012/12/24。
要将星期日期转换回时间戳,您可以使用 php 函数strtotime()
。代码如下所示:
$oW = '2012W53';
$time = strtotime($oW);
// will output: 2012-12-31T00:00:00+01:00 (I'm in CEST)
echo date('c', $time);
但是,您在上面发布的格式 - 201300 - 无法被strtotime()
. 有两个问题:
在我的测试中,我进一步发现,2012W53 指向 2012/12/31 而不是 2013W00(或您可能认为的 W01)
此外,您可以在 php 手册和关于此的Wikipedia 文章中阅读此评论。