脚本宝典收集整理的这篇文章主要介绍了momentjs和php中的时区不一致,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
2013-06-10T10:40:00.000 04:00
用户应在本地查看时间:2013-06-10T10:40:00.无论他是坐在西班牙还是美国.以下PHP代码将产生我们需要的适当时间:
$date = new DateTime('2013-06-10T10:40:00.000+04:00'); echo $date->format('d.m.Y H:i:s');
输出是:
10.06.2013 10:40:00
但是如果我们使用Momentjs在前端解析相同的日期时间字符串:
moment('2013-06-10T10:40:00.000+04:00').format('D.M.yyYY h:mm:ss');
输出是:
10.6.2013 8:40:00
浏览器时区是欧洲/柏林(02:00).使用utc()也会以错误的方式计算日期.我们需要的是这个地方的当地时间,所以在PHP的情况下它是正确的.给一个解析字符串给momentjs:
moment('2013-06-10T10:40:00.000+04:00',"YYYY-MM-DD HH:mm").format('D.M.YYYY h:mm:ss')
会做的伎俩,所以时区被删除.但我们实际上应该全局设置解析字符串,但是如何?
谢谢你的建议.
UPDATE
随着moment.js版本2.1.0的发布,您现在可以执行此操作:
VAR input = "2013-06-10T10:40:00.000+04:00"; var m = moment(input).zone(input); var s = m.format('D.M.YYYY h:mm:ss');
对.zone(输入)的额外调用将仅从字符串中提取偏移部分(04:00)并将其设置为用于格式化的区域.还有其他选择.请参阅文档中的moment#zone.
更新#2
随着moment.js版本2.3.0的发布,现在只需一个电话:
var m = moment.parseZone(input);
以上是脚本宝典为你收集整理的momentjs和php中的时区不一致全部内容,希望文章能够帮你解决momentjs和php中的时区不一致所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。