我正在尝试将日期分组为一周的数字和年份,然后我想将该周数转换回unix时间戳。我怎么能这样做呢?
答案 0 :(得分:85)
我假设您使用的是ISO 8601周数字,并且想要ISO 8601周的第一天,以便例如Week 1 of 2011
返回January 3 2011
。
strtotime
可以使用{YYYY}W{WW}
格式开箱即用:
echo date("Y-m-d", strtotime("2011W01")); // 2011-01-03
请注意,周数需要两个数字。
可耻地,DateTime::createFromFormat
,处理日期的奇特的新PHP 5方式,似乎无法解析这种信息 - 它没有“周”占位符。
答案 1 :(得分:2)
$week
:周数$year
:年份编号然后:
$timestamp = gmmktime (0, 0 , 0 , 1, , 4 + 7*($week - 1), $year);
4 + 7*($week - 1)
来自according to ISO 8601这一事实,即一年中的第一周是包含1月4日的那一周。
答案 2 :(得分:0)
strtotime('1/1/2011 + 4 weeks')
(1/1总是在第一周;这会带我到第五周)。如果你想要一周内的任何时间戳,那么这就是你所需要的,否则你将不得不去本周的星期一:
$t = strtotime('1/1/2011 + 4 weeks');
$t -= 24 * 60 * 60 * date('w', $t);
更新:而不是1/1/2011
使用2011年的第一个星期一。不再需要第二次计算。