我正在尝试将日期组合成周数和年份,然后我想将该周数转换回 unix 时间戳。我该怎么做呢?
问问题
30984 次
3 回答
93
我假设您使用的是 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 处理日期的新方法似乎无法解析此类信息 - 它没有“星期”占位符。
于 2011-04-23T09:27:36.277 回答
2
$week
: 周数$year
: 年份编号
然后:
$timestamp = gmmktime (0, 0 , 0 , 1, , 4 + 7*($week - 1), $year);
这4 + 7*($week - 1)
是因为根据 ISO 8601,一年的第一周是包含 1 月 4 日的那一周。
于 2011-04-23T09:17:09.827 回答
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 年的第一个星期一。不再需要第二次计算。
于 2011-04-23T09:16:13.887 回答