Php 如果日期早于月份,如何转换ISO 8601日期?
我有日期'1987-24-06T00:00:00.000+06:00',其中格式为'Y-d-m',当我尝试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
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所指出的。