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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.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 如果日期早于月份,如何转换ISO 8601日期?_Php_Date - Fatal编程技术网

Php 如果日期早于月份,如何转换ISO 8601日期?

Php 如果日期早于月份,如何转换ISO 8601日期?,php,date,Php,Date,我有日期'1987-24-06T00:00:00.000+06:00',其中格式为'Y-d-m',当我尝试 strtotime('1987-24-06T00:00:00.000+06:00') //return false 由于上个月的前一天,它返回false。如果我这样做 strtotime('1987-11-06T00:00:00.000+06:00') // return 563133600 它很好用 有什么办法可以让它工作吗?正如@El_Vanja提到的,我使用了createfrom

我有日期'1987-24-06T00:00:00.000+06:00',其中格式为'Y-d-m',当我尝试

strtotime('1987-24-06T00:00:00.000+06:00') //return false
由于上个月的前一天,它返回false。如果我这样做

strtotime('1987-11-06T00:00:00.000+06:00') // return 563133600
它很好用


有什么办法可以让它工作吗?

正如@El_Vanja提到的,我使用了createfromFormat,所以我的代码看起来像

$date = '1987-24-06T00:00:00.000+06:00';
$dt = \DateTime::createFromFormat("Y-d-m\TH:i:s.uP", $date)->format('Y-d-m H:i'); // 1988-12-06 00:00

这不是ISO-8601,如果一天先于一个月,这是自定义的。看看方法。您无法通过编程确定
1987-12-01
YYYY-MM-DD
还是
yyy-DD-MM
。你真的需要吗?你提前知道格式吗?这是把一天看作一个月,反之亦然。您需要使用
Y-d-m\TH:i:s.uP
。。。。这就是为什么它额外增加了一年来遵守24个月的规定。它是从格式创建的,而不是按格式创建的。这意味着你需要告诉它你正在传递什么样的格式,这就是@Phylogenesis所指出的。