Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP的第一个工作日是什么;s strotime()?_Php_Date_Localization_Strtotime - Fatal编程技术网

PHP的第一个工作日是什么;s 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引入了,在许多有用的函数中,它提供了和类。它有一个静态函数,可用于根据区域

PHP中的strotime()功能强大。它的一个特点是相对日期

例如,此命令:

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如何与周一起工作