加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 如何解析任何日期格式

发布时间:2020-12-13 22:32:04 所属栏目:PHP教程 来源:网络整理
导读:我正在努力创造一些聪明的东西,以便以任何国际格式解析日期. 在我的前端,我使用jquery ui作为日期选择器,每种语言都有其特定的日期格式. Fr:d / m / Y. 恩:m / d / Y. … 好的但是现在在php部分我必须使用相同的格式存储这些日期(Mysql Y-m-d).我想避免使
我正在努力创造一些聪明的东西,以便以任何国际格式解析日期.

在我的前端,我使用jquery ui作为日期选择器,每种语言都有其特定的日期格式.

Fr:d / m / Y.
恩:m / d / 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()(或等效的)来实际格式化发布日期.

希望这可以帮助.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读