繁体   English   中英

PHP-当星期在星期一以外的日子开始时,获取给定星期数的第一天

[英]PHP - get first day of a given week number when week starts on day other than Monday

在我的PHP应用程序中,我具有三个变量:

码:

$year = 2014
$weeknumber = 1
$weekstarts = 6 //Week starts on Saturday. 1=Monday... 6=Saturday and 7=Sunday

使用这三个参数,我想算出一周的第一天是什么。 在这种情况下,2014年的第一周(该周从星期六开始)为 12月28日。 2014年1月4日。

从星期一开始的几周里,我可以轻松地通过以下方法解决此问题:

码:

$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

演示 演示#2


您的示例不起作用,因为您使用的格式为yyyyWweek ,默认情况下为星期一。 阅读有关ISO-8601格式的信息 ,您将看到有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";

演示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM