strtotime("25/03/1957")
返回假。什么会满足所有这些日期格式?我无法想象真正制作我自己的东西需要多长时间,所以我希望你知道那里已经有一个了。
谢谢!
考虑到某些日期是有效的,但可以指向两个不同的实际日期,任何函数都无法始终“猜测”正确的格式......
为了解决这个问题,在 PHP >= 5.3 中添加了一个新函数:date_create_from_format
-- 但不幸的是,它在 PHP < 5.3 中不存在...
(另请参阅DateTime::createFromFormat
)
尽管如此,在您举的示例中,1957 年可能是问题的根源:PHP 通常与UNIX Timestamps一起使用,当涉及到日期时......
而且,至少在 32 位系统上,它们只能表示 1970 年到 2038 年之间的日期——因为它们计算自 1970 年 1 月 1 日以来的秒数。
为了避免这个问题,使用DateTime
类通常是一个好主意,其中(引用):
日期和时间信息在内部存储为 64 位数字,因此支持所有可以想象的日期(包括负年份)。范围从过去约 2920 亿年到未来相同。
(它不会解决 PHP < 5.3 的解析问题;但它会解决日期范围问题......)
我发现 dateTime 对象支持比 strtotime() 函数更广泛的格式,并且服务器的时区设置也有所不同;但我最终构建了一个函数,在使用字符串日期方法之前将“/”替换为“-”。我还测试是否有效,然后在再次测试之前尝试交换明显的 dd 和 mm (25-03-2001 => 03-25-2001) 如果无效。