【发布时间】:2013-04-17 03:36:56
【问题描述】:
我们在使 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');
输出是:
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')
可以解决问题,因此删除时区。但是我们实际上应该全局设置解析字符串,但是如何设置呢?
感谢您的建议。
【问题讨论】:
标签: php datetime timezone momentjs