使用moment / moment-timezone将时间从其他时区转换为本地时区

时间:2019-01-21 09:10:30

标签: momentjs moment-timezone

我有一个TradingHours对象

tradingHours = [
 {
  dayCode: "Monday",
  TimeZone: "Australia/Sydney",
  OpenHour: "08:30:00",
  CloseHour: "17:00:00"
 }
]

我想要做的是基于本地时区显示本地openTime / closeTime。

例如,我的本地时区是“澳大利亚/珀斯”,不同的是三个小时,那么openTime是“ 05:30”,closeTime是“ 14:00”。

我经历了一些我在其他帖子中找到的解决方案,但我都不需要这些解决方案。

我可以计算出不同的分钟数(-180),然后进行一些编码以计算出相应的时间。

但是,我相信必须有更好的方法来实现它。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您可以按以下方式使用矩时区的.tz函数:

var tradingHours = [
 {
  dayCode: "Monday",
  TimeZone: "Australia/Sydney",
  OpenHour: "08:30:00",
  CloseHour: "17:00:00"
 }
]

var a = moment.tz(tradingHours[0].OpenHour, 'HH:mm:ss', tradingHours[0].TimeZone)

console.log(a.tz('Australia/Perth').format('DD/MM/YYYY HH:mm:ss ZZ'));
// or
console.log(a.local().format('DD/MM/YYYY HH:mm:ss ZZ'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.23.0/moment.js"></script>
<script src="https://momentjs.com/downloads/moment-timezone-with-data.js"></script>