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

标签 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)

但从星期一以外的日子开始的几周内它都不起作用。

最佳答案

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

关于PHP - 当周从星期一以外的一天开始时,获取给定周数的第一天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20984389/

相关文章:

php - 如何解决 Moodle 3.8.4 上的 ddl 执行错误?

javascript - 如何使用 PHP 比较 Selenium WebDriver 中元素的位置

java - 查找天数

java - 读取重复事件时出现问题

php - Coldfusion 相当于 PHP strtotime()?

php - 在 PHP 上进行多重 INSERT 的最简单方法

php - Phalcon MySQL 更新不工作

Java 本地化日历

php - 为什么 strtotime() 和 date() 返回 1969-31-12?

PHP 时间和日期函数与对象