我有一個格式爲yW的字符串。一年之後是週數。我想獲得時間戳。我在Windows上使用Php 5.2.17。PHP:將yW格式的字符串解析爲時間戳
strtotime()
似乎沒有可靠的工作。對於字符串'1142'它應該會返回2011年第42周的第一天。
有關如何執行此操作的任何建議?
我有一個格式爲yW的字符串。一年之後是週數。我想獲得時間戳。我在Windows上使用Php 5.2.17。PHP:將yW格式的字符串解析爲時間戳
strtotime()
似乎沒有可靠的工作。對於字符串'1142'它應該會返回2011年第42周的第一天。
有關如何執行此操作的任何建議?
給這個一展身手,在Windows也將工作...
$date = '1201';
$y = substr($date, 0, 2) + 2000;
$w = substr($date, 2);
$ts = mktime(0, 0, 0, 0, 0, $y) + ($w * 604800);
減去1周,從本週如果1年
strtotime()
的第一週,不接受特定的格式。但是,如果它們的格式爲2011W42
,則它可以使用年份和星期數值。
// Convert 1142 to 2011W42
$reformatted = '20'.substr_replace('1142', 'W', 2, 0);
$timestamp = strtotime($reformatted);
有關此特定格式的詳細信息,請參閱Compound Formats。
另一個選項是DateTime
類中的setIDODate()
方法。
sscanf('1142', '%2d%2d', $year, $week);
$date = new DateTime('@0');
$date->setISODate(2000 + $year, $week);
$timestamp = $date->format('U');
非常優雅,應該更高效:) – Geoffrey 2012-01-11 09:53:48
這不計算更正,請參閱https://en.wikipedia.org/wiki/ISO_week_date#Calculation ISO週日期計算示例。 – Ciantic 2013-10-15 13:36:55