php – 如何解析任何日期格式
我正在努力创造一些聪明的东西,以便以任何国际格式解析日期.
在我的前端,我使用jquery ui作为日期选择器,每种语言都有其特定的日期格式. Fr:d / m / Y. 好的但是现在在php部分我必须使用相同的格式存储这些日期(Mysql Y-m-d).我想避免使用开关盒和类似的东西,所以我开始寻找另一种选择. 我发现的最好的事情是 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::NONE); php > echo $i->getPattern(); M/d/yy /* wtf */ 我错过了什么吗? 谢谢 解决方法
没有“通用日期格式符号标准”.符号“y”可以是2位数年份,4位数年份,甚至3个字母缩写月份(极不可能),具体取决于来源.
IntlDateFormatter的格式符号记录为here.从文档中可以看出,对于此实现,“d”是没有前导零的日期,而“dd”包含前导零. “M”和“MM”都代表带有前导零的月份. “yy”是2位数年份. 这个和jQuery UI的日期格式符号之间有足够的区别,你需要一个数据映射来将IntlDateFormatter格式符号映射到jQuery UI datepicker format symbols,反之亦然. 这样的东西应该足够了(未经测试): // PHP => jQuery $formatMap = array( 'dd' => 'dd','d' => 'd','MM' => 'mm','M' => 'mm','yy' => 'y' // and so on... ); 设置好地图后,可以根据区域设置创建IntlDateFormatter,将该格式的符号转换为jQuery UI日期格式符号,然后将格式发送到前端. 当用户回发所选日期时,您可以反向执行相同操作以返回IntlDateFormatter符号.此时,您可以使用IntlDateFormatter :: setPattern()的组合将格式设置为MySQL样式,并使用datefmt_format()(或等效的)来实际格式化发布日期. 希望这可以帮助. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |