我正在尝试根据区域设置查找第一周和最后一周的日期。
在美国,一周通常从星期天开始,但在其他国家,一周可以从另一天开始,例如星期一甚至星期六。
setlocale(LC_ALL, "en_US.UTF-8");
date_default_timezone_set("America/New_York");
$start_week = (new DateTimeImmutable());
$start_week = $start_week->modify('this week');
$end_week = $start_week->modify('this week +6 days');
$interval = new DateInterval('P1D');
$week_range = new DatePeriod($start_week, $interval, $end_week);
foreach($week_range as $week_day) {
// $week_day starts with Monday, supposed to be Sunday
}
2条答案
按热度按时间eoigrqb61#
一种方法是使用
IntlCalendar
类,它有一个getFirstDayofWeek()
方法,返回一个整数,对应于IntlCalendar中的**DOW_
**常量:当调用
DateTimeImmutable::modify()
作为开始日期时,使用它将天数添加到开始日期。请在this phpfiddle中查看它在三个语言环境(即 en_US、es_ES、sw_KE)中的实际操作。ejk8hzay2#
IntlCalendar可以完成所有这些工作,但没有很好的文档记录。
其他答案使用一些硬编码的值,但这个答案没有。