带有时区的时刻没有正确格式化日期

Moment with Timezone not properly formatting date

我正在尝试使用 Moment with Timezones 格式化 2014-10-03T23:09:42.764Z,以便我可以为应用程序的用户正确显示它。但是,无论我在 Moment 中输入哪个时区,它仍然会继续显示当前语言环境的时区:(我在美国东部时间)

moment('2014-10-03T23:09:42.764Z').tz('Europe/Paris').format()
"2014-10-03T19:09:42-04:00"
moment('2014-10-03T23:09:42.764Z').tz('Europe/London').format()
"2014-10-03T19:09:42-04:00"

即使我同时输入了伦敦和巴黎,它仍然以我当前的时区显示。有没有办法强制 Moment 在给定时区显示?

您应该尝试类似的方法:

var m = moment.tz('2014-10-03T23:09:42.764Z', 'America/Toronto');    
m.tz("Europe/Paris").format();

设置默认时区,在您的 post:

var date = moment('2014-10-03T23:09:42.764Z')

看来,日期对象中没有默认的时区信息。

可以查看官方documentation了解更多详情

希望对您有所帮助

您的代码看起来是正确的,并且在 moment-timezone 网站上的 Chrome 开发工具调试器控制台中进行测试时代码有效:

这是一个工作片段:

var a = moment('2014-10-03T23:09:42.764Z').tz('Europe/Paris').format();
var b = moment('2014-10-03T23:09:42.764Z').tz('Europe/London').format();

document.getElementById("a").innerHTML = a;
document.getElementById("b").innerHTML = b;
<script src="http://momentjs.com/downloads/moment.min.js"></script>
<script src="http://momentjs.com/downloads/moment-timezone-with-data-2010-2020.min.js"></script>
<div id="a"></div>
<div id="b"></div>

我只能断定你没有正确加载时刻时区数据。