strtotime与年份2位数格式

时间:2010-09-02 10:07:56

标签: php

你好,有人可以用非标准格式解释年度strtotime功能的行为。

echo date("d-m-Y",strtotime('02-12-10')) .'<br>'; //10-12-2002
echo date("d-m-Y",strtotime('09.09.10')) .'<br>'; //02-09-2010 --How this is interpreted?


echo date("d-m-Y",strtotime('02-12-2010')) .'<br>'; //02-02-2010
echo date("d-m-Y",strtotime('09.09.2010')) .'<br>'; //09-09-2010

我想将格式为dd.mm.yy(09.09.10)的字符串转换为日期时间格式。

3 个答案:

答案 0 :(得分:6)

在这种情况下,

strtotime()可能有点不稳定。它旨在识别标准的美国日期格式。

如果你可以使用PHP&gt; 5.3,考虑使用DateCreateFromFormat,它具有接受预定义格式字符串来解析传入数据的巨大优势。

在5.3之前的平台上,strptime()似乎提供了第二好的选择。它在Windows上不可用,并且有一些小问题 - 请务必在使用前阅读手册页。

答案 1 :(得分:3)

来自manual

  

“日,月,两位数年份,带点或标签”格式(dd [。\ t] mm“。”yy) 仅适用于年份值61(含)到99 (包括) - 在这些年份之外的时间格式“HH [。:] MM [。:] SS”优先。

您正在使用'09.09.10'且10不属于有效范围,因此将分隔符更改为-

答案 2 :(得分:1)

这不是2位数年份问题。 这是非标准格式问题 从一个程序中提出不可能的事情 即使是我,也不是一台电脑,也不知道这些09年的蠢事在你的约会中意味着什么。是day.month.year吗?还是year.month.day或其他什么? 假设它是day.month.year

$list($d,$m,$y) = explode("09.09.10");
echo "$d-$m-20$y";