我一直在使用
PHP的strtotime()方法接受表单上的日期字段.我喜欢它有多强大,它将如何接受“明天”,“下周四”或(据说)任何日期表示并将其转换为Unix时间戳.
它一直很好 – 直到昨天.有人进入“2-4-10”而不是记录2010年2月4日,它记录在2002年4月10日!所以它期望Y-M-D而不是M-D-Y.
我想也许问题只是使用了两位数的年份,所以我们再次尝试使用“2-4-2010”.记录在2010年4月2日!那时我只是不明白strtotime()正在做什么. PHP.net表示它希望采用美国英语日期格式.为什么它会假设D-M-Y?
有没有解决的办法?或者我是否必须停止使用strtotime()?
注意:我刚才做了一个测试.当你使用斜杠而不是连字符/短划线时,它工作正常,即使是2/4/10.为什么这个重要?如果就是这样,我应该在表单输入上运行str_replace(“ – ”,“/”,$input),然后再将其传递给strtotime()吗?
– 表示ISO日期:
03-02-01 => 1. february 2003 (ISO) 01.02.03 => 1. february 2003 (European) 02/01/03 => 1. february 2003 (US)