我一直在使用 PHP 的 strtotime() 方法来接受表单上的日期字段。我喜欢它的强大功能,它如何接受“明天”、“下周四”或(据说)任何日期表示并将其转换为 Unix 时间戳。
它一直工作得很好——直到昨天。有人输入“2-4-10”,而不是记录 2010 年 2 月 4 日,而是记录 2002 年 4 月 10 日!所以它期望 YMD 而不是 MDY。
我认为问题可能只是使用 2 位数的年份,所以我们再次尝试使用“2-4-2010”。记录在 2010 年 4 月 2 日!那时我只是不明白 strtotime() 在做什么。PHP.net 说它需要美国英语日期格式。那为什么它会假设DMY?
有没有解决的办法?还是我必须停止使用 strtotime()?
注意:我刚刚做了一个测试。当您使用斜杠而不是连字符/破折号时,它可以正常工作,即使是 2/4/10。为什么这很重要?如果仅此而已,我是否应该在将表单输入传递给 strtotime() 之前在表单输入上运行 str_replace("-", "/", $input)?