【发布时间】:2011-09-21 19:29:26
【问题描述】:
我正在尝试做一些聪明的事情来解析任何国际格式的日期。
在我的前端,我使用 jquery ui 作为日期选择器,每种语言都有其特定的日期格式。
Fr: d/m/Y 恩:月/日/年 ...
好的,但现在在 php 部分,我必须使用相同的格式(Mysql Y-m-d)存储这些日期。我想避免使用 switch case 之类的东西,所以我开始寻找另一种选择。
我发现最好的东西是
http://www.php.net/manual/en/datetime.createfromformat.php 如果我知道格式,该函数将使我能够解析日期。
例如
$format = 'Y-m-d';
$date = DateTime::createFromFormat($format, '2009-02-15');
好的,这是一个好的开始,但现在我想找到当前语言环境的标准日期格式。
所以我发现了这个:
http://www.php.net/manual/en/intldateformatter.getpattern.php
但我真的不知道如何让它工作,因为我得到不一致的结果:
php > $i = new IntlDateFormatter("fr_FR.utf8",IntlDateFormatter::SHORT,IntlDateFormatter::NONE);
php > echo $i->getPattern();
dd/MM/yy
/* correct ! */
但是
php > $i = new IntlDateFormatter("en_US.utf8",IntlDateFormatter::SHORT,IntlDateFormatter::NONE);
php > echo $i->getPattern();
M/d/yy /* wtf */
我错过了什么吗?
谢谢
【问题讨论】:
-
在某些时候,您必须放下脚并自己确定格式。或者你最终会试图弄清楚 1/2/3 是什么。 03 年 2 月 1 日? 01 年 2 月 3 日? 02 年 3 月 1 日?等等等等等等。尝试和适应是很好的,但有时你必须坚持以某种形式呈现。
-
将存储的格式将是特定格式,但我需要解析用户传递的日期。
-
是的,但同样...如果您允许用户提供诸如 1/2/3 之类的内容,则无法可靠地解析它。就像我说的那样,在输入上保持灵活性很好,而且花花公子,但在某些时候,坚持固定格式比试图让自己陷入困境更容易。
-
问题是,由于我使用日期选择器,格式实际上是强制使用正确的语言环境格式,所以我认为这足以信任