PHP:解析任何格式的日期(特别是:2008-10-20,2008 / 10/20,2008。10。20,11月20日)

时间:2010-07-16 19:29:55

标签: php datetime strtotime

strtotime("25/03/1957")返回false。什么会满足所有这些日期格式?我无法想象实际制作自己需要多长时间,所以我希望你已经知道了它。

谢谢!

2 个答案:

答案 0 :(得分:2)

考虑到某些日期有效,但可以指向两个不同的实际日期,任何时候任何功能都无法“猜测”正确的格式......

为了解决这个问题,使用PHP> = 5.3,添加了一个新函数:date_create_from_format - 但它不存在PHP< 5.3,不幸的是......
(另见DateTime::createFromFormat


尽管如此,在你所采用的例子中,1957年可能是问题的根源:当涉及到日期时,PHP通常与UNIX Timestamps一起使用...

并且,至少在32位系统上,那些只能代表1970年到2038年之间的日期 - 因为它们计算自1970-01-01以来的秒数。

为避免此问题,使用{em>(DateTime)的quoting类通常是个好主意:

  

日期和时间信息是   内部存储为64位数字   所有可以想象的日期(包括   负面年份)得到支持。该   范围大约是2920亿年   过去对未来一样。

(它不会解决PHP< 5.3的解析问题;但它会解决日期范围问题......)

答案 1 :(得分:1)

我发现dateTime对象支持的格式比strtotime()函数更广泛,服务器的时区设置也有所不同;但是在使用字符串到日期方法之前,我最终构建了一个用' - '替换'/'的函数。我也测试有效,然后尝试交换明显的dd和mm(25-03-2001 => 03-25-2001),如果在再次测试之前无效。