在我的 PHP 应用程序中,我有三个变量:
代码:
$year = 2014
$weeknumber = 1
$weekstarts = 6 //Week starts on Saturday. 1=Monday... 6=Saturday and 7=Sunday
通过这三个参数,我想弄清楚一周的第一天是哪一天。在本例中,2014 年的第一周(一周从星期六开始)为 12 月 28 日。 2014-01-04。
从周一开始的几周里,我可以轻松地解决这个问题:
代码:
$first_day_of_week = strtotime( $year . "W" . "0".$weeknumber)
但从星期一以外的日子开始的几周内它都不起作用。
最佳答案
使用DateTime::setISODate
,其中第三个参数是星期几:
$dt = new DateTime;
echo $dt->setISODate(2014, 1, 0)->format('Y-m-d'), "\n"; # 0 = Sunday
echo $dt->setISODate(2014, 1, 1)->format('Y-m-d'), "\n"; # 1 = Monday
echo $dt->setISODate(2014, 1, 6)->format('Y-m-d'), "\n"; # 6 = Saturday
您的示例不起作用,因为您使用的格式为yyyyWweek
,默认情况下为星期一。 Read about ISO-8601 formats ,您将看到格式为 yyyy-Wweek-day
,您可以使用如下格式:
$format = sprintf("%d-W%02d-%d", $year, $weeknumber, $weekstarts == 7 ? 0 : $weekstarts);
$first_day_of_week = strtotime($format);
echo "$format returned $first_day_of_week\n";
关于PHP - 当周从星期一以外的一天开始时,获取给定周数的第一天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20984389/