2012-11-08 80 views
1

也许我需要更多的睡眠,但我有一些怪诞的时间,我无法解释。strtotime英国日期怪异

一个日期的英国本地化表示法是d/m/Y这就是我从外部源获得的CSV内容插入MySQL(格式:Y-m-d)。

当然,我看到的直接问题是PHP(使用strtotime时)将这些错误转换。下面是字段值的var_dump用一个例子后strtotimevar_dump后:

string(10) "13/07/1992" string(19) "1969-12-31 16:00:00" // This one is odd 
string(10) "07/09/1992" string(19) "1992-07-09 00:00:00" 
string(10) "09/11/1992" string(19) "1992-09-11 00:00:00" 

原本我以为这是因为PHP不支持英国的符号(http://www.php.net/manual/en/datetime.formats.date.php),并认为这是美国然而迄今为止这并不能解释为什么如果我改变了功能,以取代/-

date('Y-m-d H:i:s', strtotime(str_replace('/', '-', $string_time))) 

同一日期做的工作:

string(10) "13/07/1992" string(19) "1992-07-13 00:00:00" 
string(10) "07/09/1992" string(19) "1992-09-07 00:00:00" 
string(10) "09/11/1992" string(19) "1992-11-09 00:00:00" 

我实际上有一个200日期的测试集,所有工作都在-表示法下。

根据文档,这里不应该适用相同的规则吗?

+0

没关系我需要更多的睡眠,如果它是一个斜杠它是美国人,如果它是一个短划线或点是欧洲日期,对于浪费时间对不起 – Sammaye

回答

0

美国格式使用斜杠,因为那是那里的惯例。通常,不使用破折号。 strototime()的行为很简单:

  • 两位数,斜杠,两位数,斜杠,四位数?美国格式(月份,然后一天)。
  • 两位数字,短划线,两位数字,短划线,四位数字?国际格式(日,月)。

可以找到更多的技术列表格式(以及如何解释它们的strototime()here。您可能也有兴趣DateTime::createFromFormat

+0

事实上,我读了在最后一分钟,同样适用于点好。 – Sammaye