【发布时间】:2017-12-21 09:24:06
【问题描述】:
我正在使用 moment 和 moment-timezone 来输出给定电视节目的播出日期/时间(对于任何时区)
主机时区是美国/芝加哥
在下面的示例中,传入的dateTime 是一个播出时间为 3 小时的电视节目。美国/芝加哥是周日晚上 9:00,欧洲/萨格勒布是周一凌晨 4:00:
determineAirTime(dateTime) {
console.log(dateTime); // July 16th 2017 9:00PM
dateTime =
momentTimezone.tz(dateTime, "MMM Do YYYY hA", momentTimezone.tz.guess());
dateTime = dateTime.format(); // this creates: 2017-07-16T21:00:00-05:00
// moment
moment(dateTime).calendar(); // Today at 9:00 PM
}
对于我的时区(美国/芝加哥),Today at 9:00 PM 是正确的。但是,它总是为任何时区输出Sunday 9:00 pm,这是不正确的。
这是我们在示例中使用的相同数据的示例,但时区不同:
上面的正确输出是Monday at 4:00 AM。
如何修复我的程序,以便打印出正确的时区播出/日期时间?
【问题讨论】:
-
发布文本比发布图像要好得多。鉴于萨格勒布是 UTC+01:00,那么 2017-07-23T21:00:00+02:00 是 2017-07-23T20:00:00+01:00。为什么你认为时间应该是 04:00?美国/芝加哥是 UTC-06:00,所以应该是 2017-07-23T13:00:00-06:00 或下午 1 点。
-
现在是萨格勒布的凌晨 1:23,我的示例的通话时间是从现在开始的 3 小时,因此输出应该是星期一凌晨 4:00。或者类似的东西
-
也许您应该指定一些精确的输入、输出和偏移量。你的问题不清楚。
-
我会尝试改写问题
-
在您的问题中,dateTime 的值是多少? thing 的价值是什么?主机时区是什么?
标签: javascript datetime timezone momentjs