什么是PHP的第一个工作日strtotime()?

时间:2016-02-12 12:26:44

标签: php date localization strtotime

PHP中的

strtotime()功能非常强大。其中一个功能是相对日期。

例如这个命令:

echo date('Y-m-d', strtotime('Sunday this week'));

在我的机器上生成2016-02-14(今天是#34; 2016-02-12",星期五)。因此,它假设一周的第一天是星期一。但是在不同的语言环境国家/地区的第一天是不同的。 有没有办法改变这种行为,让strtotime()认为第一周是星期日?

2 个答案:

答案 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