Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/271.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

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 有人能解释一下日期(“YW”和标准时间(“2016-01-02”);返回“;201653”;?_Php_Date_Week Number - Fatal编程技术网

Php 有人能解释一下日期(“YW”和标准时间(“2016-01-02”);返回“;201653”;?

Php 有人能解释一下日期(“YW”和标准时间(“2016-01-02”);返回“;201653”;?,php,date,week-number,Php,Date,Week Number,年份还行 本周从2015年开始PHP与日期一致: 本标准的目的是提供一种明确且定义明确的日期和时间表示方法,以避免对日期和时间的数字表示的误解,尤其是在具有不同书写数字日期和时间约定的国家之间传输数据时 这意味着一年中的第一周定义为: 一年中第一个星期四所在的一周 如果1月1日在星期一、星期二、星期三或星期四,则在第01周。如果1月1日是星期五、星期六或星期日,则是前一年的第52周或第53周(没有第00周) 就PHP而言,这意味着2016年1月2日不是2016年第一周 如果您对date()使用o

年份还行
本周从2015年开始

PHP与日期一致:

本标准的目的是提供一种明确且定义明确的日期和时间表示方法,以避免对日期和时间的数字表示的误解,尤其是在具有不同书写数字日期和时间约定的国家之间传输数据时

这意味着一年中的第一周定义为:

一年中第一个星期四所在的一周

如果1月1日在星期一、星期二、星期三或星期四,则在第01周。如果1月1日是星期五、星期六或星期日,则是前一年的第52周或第53周(没有第00周)

就PHP而言,这意味着2016年1月2日不是2016年第一周

如果您对
date()
使用
o
标志,您将获得ISO-8601年,2015年将返回:

date("YW", strtotime("2016-01-02")); returns “201653”

你可能想考虑的是检查月份是一月,星期数是53,然后是新日历年的第一周(不是ISO-8601年)。
PHP使用ISO-8601规范表示周数

一年中第一周的定义(ISO 8601):

第01周的描述相互等效:

  • 一周中有一年的第一个星期四(正式的ISO定义)

  • 1月4日的一周

  • 开始年份中的第一周(四天或四天以上),以及

  • 从12月29日至1月4日期间的星期一开始的一周

如果1月1日在星期一、星期二、星期三或星期四,则在第01周。
如果1月1日是星期五、星期六或星期日,则是前一年的第52周或第53周(没有第00周)。12月28日总是一年中的最后一周。

这里有一个例子:

if (date('n') == 1 && date('W') == 53) {
    // first calendar week of the year
}

PHP使用ISO-8601年的周数,从周一开始的周数。如果一年中的1月1日不是星期一,则该周被视为上一年的最后一周;第53周


因为2016年1月1日是星期五,所以它是2015年12月28日开始的一周的一部分。如果运行代码
echo date('Y-W',strottime('2015-12-31')您将获得输出“2015-53”,因此根据ISO-8601,同一周的天数也将是第53周。

查看ISO年份。1月1日并不意味着新的一年<代码>回音日期(“oW”,标准时间(“2016-01-02”)1月1日,不完全是新年<代码>:)
根据ISO的定义,第01周是一年中第一个星期四所在的一周;
if (date('n') == 1 && date('W') == 53) {
    // first calendar week of the year
}
echo date("YW", strtotime("2016-01-02")); //201653
echo date("YW", strtotime("2016-01-04")); //201601