什么是我的PHP应用程序无需依赖依赖的解决方案,以检测运行中的php进程一周的第一天?示例:
我已经尝试过了:
$first_day_of_week = date('l', strtotime('This week'));
我希望代码对美国用户返回星期日,对欧洲用户返回星期一。但是它总是返回星期一(ISO-8601星期日历)。
答案 0 :(得分:0)
尽管不是依赖依赖的解决方案。这是使用PHP扩展Intl检测星期类型。
if (extension_loaded('intl')) {
switch (IntlCalendar::createInstance()->getFirstDayOfWeek()) {
case 1: $first_day_of_week = 'Sunday'; break; // Western
case 2: $first_day_of_week = 'Monday'; break; // ISO-8601
case 7: $first_day_of_week = 'Saturday'; break; // Middle Eastern
}
} else {
trigger_error('PHP is missing the Intl extension', E_USER_WARNING);
}
答案 1 :(得分:0)
返回的一周的第一天
$no = IntlCalendar::createInstance()->getFirstDayOfWeek();
取决于您的php.ini。您可以通过locale_get_default()获得默认值。 IntlCalendar :: createInstance()接受语言环境作为第二个参数,然后在一周的第一天提供不同的结果。
foreach(['en_AE','en_US','en_GB'] as $locale){
$no = IntlCalendar::createInstance(null,$locale)->getFirstDayOfWeek();
$weekDayName = date('l', strtotime('Saturday +'.$no.' days'));
echo $locale.' : '.$weekDayName.'<br>';
}
输出:
en_AE : Saturday
en_US : Sunday
en_GB : Monday
无论如何,以下内容适用于date和DateTime:
在PHP日期函数中,每周的开始始终是ISO-8601。
(已在评论中指出)