首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >()看起来像是期望欧元格式

()看起来像是期望欧元格式
EN

Stack Overflow用户
提问于 2010-02-05 13:33:12
回答 4查看 1.2K关注 0票数 7

我一直在使用PHP的strtotime()方法来接受表单上的日期字段。我喜欢它是多么强大,它将如何接受“明天”,“下星期四”,或(据说)任何日期表示,并将它转换为Unix时间戳。

一直运作得很好直到昨天。有人输入了"2-4-10“,而不是2010年2月4日,它记录了2002年4月10日!所以它期望的是Y-M-D而不是M Y。

我想问题可能只是使用了2位数的年份,所以我们再次尝试了"2-4-2010“。记录在2010年4月2日!在这一点上,我只是不明白strtotime()在做什么。PHP.net表示,它预计将采用美国英语日期格式。那它为什么要假设D?

有办法绕道吗?还是我必须停止使用strtotime()?

注:,我刚才做了一个测试。当你用斜线代替连字符/破折号时,即使用2/4/10,它也很好。这到底有什么关系?如果仅此而已,我是否应该在表单输入上运行str_replace("-“、"/”、$input),然后将其传递给strtotime()?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-02-05 13:43:11

-指示ISO日期:

代码语言:javascript
复制
03-02-01  => 1. february 2003 (ISO)
01.02.03  => 1. february 2003 (European)
02/01/03  => 1. february 2003 (US)
票数 7
EN

Stack Overflow用户

发布于 2010-02-05 13:56:30

strtotime()的行为主要基于GNU日期输入格式规范。但是,尽管它很强大,但不应该指望它能读懂人们的思想。允许自由形式的用户日期输入是在要求永久的麻烦。

票数 6
EN

Stack Overflow用户

发布于 2010-04-14 01:37:09

我有这个问题,并解决了它完全按照您的建议-在用户输入的日期做一个str_replace -用斜杠代替破折号。这防止了strtotime使用ISO并解决了这个问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2207495

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档