小编Her*_*ier的帖子

momentjs和php中的时区不一致

我们遇到问题需要在php和momentjs同步中获取日期时间表示.让我们说我们在莫斯科有一个带时区的约会时间:

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');
Run Code Online (Sandbox Code Playgroud)

输出是:

10.06.2013 10:40:00
Run Code Online (Sandbox Code Playgroud)

但是如果我们使用momentjs在前端解析相同的日期时间字符串:

moment('2013-06-10T10:40:00.000+04:00').format('D.M.YYYY h:mm:ss');
Run Code Online (Sandbox Code Playgroud)

输出是:

10.6.2013 8:40:00
Run Code Online (Sandbox Code Playgroud)

浏览器时区是欧洲/柏林(+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')
Run Code Online (Sandbox Code Playgroud)

会做的伎俩,所以时区被删除.但我们实际上应该全局设置解析字符串,但是如何?

谢谢你的建议.

php timezone datetime momentjs

4
推荐指数
1
解决办法
3114
查看次数

标签 统计

datetime ×1

momentjs ×1

php ×1

timezone ×1