PHP的第一个工作日是什么;s strotime()?
PHP中的strotime()功能强大。它的一个特点是相对日期 例如,此命令:PHP的第一个工作日是什么;s strotime()?,php,date,localization,strtotime,Php,Date,Localization,Strtotime,PHP中的strotime()功能强大。它的一个特点是相对日期 例如,此命令: echo date('Y-m-d', strtotime('Sunday this week')); 在我的机器上生成2016-02-14(今天是“2016-02-12”,星期五)。因此,它假设一周的第一天是星期一。然而,在不同的地区和国家,一周的第一天是不同的。 有没有办法改变这种行为,使strotime()认为第一周是星期天?PHP5.5引入了,在许多有用的函数中,它提供了和类。它有一个静态函数,可用于根据区域
echo date('Y-m-d', strtotime('Sunday this week'));
在我的机器上生成2016-02-14
(今天是“2016-02-12”,星期五)。因此,它假设一周的第一天是星期一。然而,在不同的地区和国家,一周的第一天是不同的。
有没有办法改变这种行为,使strotime()认为第一周是星期天?PHP5.5引入了,在许多有用的函数中,它提供了和类。它有一个静态函数,可用于根据区域设置获取一周的第一天
直接从文档中:
ini_set('date.timezone', 'UTC');
$cal1 = IntlCalendar::createInstance(NULL, 'es_ES');
var_dump($cal1->getFirstDayOfWeek()); // Monday
正如在问题的评论中所讨论的,依赖自定义函数可能更好,该函数经过测试,很可能在每台机器上产生相同的结果 这样的函数可以是:
<?php
function x() {
return date('Y-m-d', date('N')==7 ? strtotime('today') : strtotime('last sunday'));
}
echo x();
我不知道它是相对于区域设置的,但是如果它在任何地方配置,它很可能是在Web服务器使用的php.ini中配置的。您是否在php.ini
中为date.timezone
固定了时区值?不同的版本也可能导致不同的解释(例如,请参见changelog on)。@Glubus,我用错词了。我也没有说这是相对于语言环境的。但我想澄清一下:)@Latheesan,我尝试了丹在下面建议的一切。没人帮忙。它还允许设置一周的第一天,via。谢谢John。您的解决方案很可能会奏效,但我还没有准备好在我的所有服务器上安装额外的PHP扩展来计算正确的工作日:)谢谢您提供了一个简单的解决方案。我对它投了更高的票,但不会将其标记为正确答案,因为整个问题都是关于strotime
函数的。我仍然在等待官方文档或bugtracker链接的解释,解释Strotime如何与周一起工作