PHP - 在周一开始的一周开始时获得给定周数的第一天

时间:2014-01-07 23:50:46

标签: php calendar strtotime dayofweek week-number

在我的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)

但是从星期一以后的几天开始,它几周都没有用。

1 个答案:

答案 0 :(得分:1)

使用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

demo demo #2


您的示例无效,因为您使用的格式为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";

demo