我一直在使用PHP的strtotime()方法接受窗体上的日期字段。我喜欢它有多强大,它将如何接受“明天”,“下周四”或(据说)任何日期表示,并将其转换为Unix时间戳。PHP strtotime()看起来像它期待欧元格式
它一直在努力 - 直到昨天。有人进入“2-4-10”,而不是记录2010年2月4日,它记录了2002年4月10日!所以它期望Y-M-D而不是M-D-Y。
我想也许问题只是使用了2位数的年份,所以我们再次尝试使用“2-4-2010”。这记录2010年4月2日!那时我只是不明白strtotime()在做什么。 PHP.net表示它期望美国英文日期格式。那么为什么会假设D-M-Y?
有没有办法解决这个问题?或者我必须停止使用strtotime()?
注:我刚才做了一个测试。当你使用斜杠代替连字符/破折号时,即使在2/4/10时也可以正常工作。为什么地球上这很重要?如果就是这样,我应该在将表单输入传递给strtotime()之前,先运行str_replace(“ - ”,“/”,$ input)吗?
是的,试图用strtotime处理日期之前用某种方式规范日期对我来说似乎是一个好主意。 – JAL 2010-02-05 13:46:40
只要等到你尝试使用strtotime解析*次*,那么你就会有一些真正的乐趣。 (Think timezone,DST等) – 2010-10-12 16:04:14