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

我正在努力创造一些聪明的东西,以便以任何国际格式解析日期.

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

Fr:d / m / Y.

恩:m / d / Y.

好的但是现在在php部分我必须使用相同的格式存储这些日期(Mysql Y-m-d).我想避免使用开关盒和类似的东西,所以我开始寻找另一种选择.

我发现的最好的事情是

例如

$format = 'Y-m-d';

$date = DateTime::createFromFormat($format, '2009-02-15');

好的,这是一个好的开始,但现在我想找到当前语言环境的标准日期格式.

所以我发现了这个:

但我真的不知道如何让它工作,因为我得到了无穷无尽的结果:

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 */

我错过了什么吗?

谢谢

解决方法:

没有“通用日期格式符号标准”.符号“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()(或等效的)来实际格式化发布日期.

希望这可以帮助.

标签:php,date

来源: https://codeday.me/bug/20190709/1418293.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值