你好,有人可以用非标准格式解释年度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)的字符串转换为日期时间格式。
答案 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";