strtotime()
功能非常强大。其中一个功能是相对日期。
例如这个命令:
echo date('Y-m-d', strtotime('Sunday this week'));
在我的机器上生成2016-02-14
(今天是#34; 2016-02-12",星期五)。因此,它假设一周的第一天是星期一。但是在不同的语言环境国家/地区的第一天是不同的。
有没有办法改变这种行为,让strtotime()
认为第一周是星期日?
答案 0 :(得分:1)
正如问题评论中所讨论的那样,依靠自定义函数可能会更好,该函数经过测试并且很可能在每台机器上产生相同的结果。
这样的功能可能是:
<?php
function x() {
return date('Y-m-d', date('N')==7 ? strtotime('today') : strtotime('last sunday'));
}
echo x();
您找到了一个演示here。
如果您有许多机器要部署代码,您可以在安装过程中另外包含一个测试脚本,该脚本测试是否从中获得了正确的结果(以及其他可能因安装而异的内容)。
答案 1 :(得分:0)
PHP 5.5引入了Internationalization extension,它在许多有用的函数中提供了IntCalendar类。它有一个静态函数getFirstDayOfWeek
,可用于根据区域设置获取一周的第一天。
直接来自文档:
ini_set('date.timezone', 'UTC');
$cal1 = IntlCalendar::createInstance(NULL, 'es_ES');
var_dump($cal1->getFirstDayOfWeek()); // Monday