【问题标题】:How to convert times from IST to UTC如何将时间从 IST 转换为 UTC
【发布时间】:2018-03-28 04:30:33
【问题描述】:

我想使用moment.js 将 IST(印度标准时间)的以下时间显示为 UTC,我遇到困难的逻辑是:

例如: 星期四:4:00 AM开始提供,等效的UTC时间是10:30 PM 星期三

这是我尝试将其转换为 UTCIST 中的 JSON 对象。有人可以指导我如何实现这一目标。

  {
    "Friday" : {
      "available" : 1,
      "times" : [ {
        "endTime" : "1:30 PM",
        "startTime" : "9:00 AM"
      }, {
        "endTime" : "6:00 PM",
        "startTime" : "2:30 PM"
      } ],
      "weekday" : "Friday"
    },
    "Monday" : {
      "available" : 1,
      "times" : [ {
        "endTime" : "1:30 PM",
        "startTime" : "9:00 AM"
      }, {
        "endTime" : "6:00 PM",
        "startTime" : "2:30 PM"
      } ],
      "weekday" : "Monday"
    },
    "Saturday" : {
      "available" : 1,
      "times" : [ {
        "endTime" : "1:30 PM",
        "startTime" : "9:00 AM"
      }, {
        "endTime" : "6:00 PM",
        "startTime" : "2:30 PM"
      } ],
      "weekday" : "Saturday"
    },
    "Sunday" : {
      "available" : 0,
      "times" : [ {
        "endTime" : "1:30 PM",
        "startTime" : "9:00 AM"
      }, {
        "endTime" : "6:00 PM",
        "startTime" : "2:30 PM"
      } ],
      "weekday" : "Sunday"
    },
    "Thursday" : {
      "available" : 1,
      "times" : [ {
        "endTime" : "1:30 PM",
        "startTime" : "4:00 AM"
      }, {
        "endTime" : "6:00 PM",
        "startTime" : "2:30 PM"
      } ],
      "weekday" : "Thursday"
    },
    "Tuesday" : {
      "available" : 1,
      "times" : [ {
        "endTime" : "1:30 PM",
        "startTime" : "9:00 AM"
      }, {
        "endTime" : "6:00 PM",
        "startTime" : "2:30 PM"
      } ],
      "weekday" : "Tuesday"
    },
    "Wednesday" : {
      "available" : 1,
      "times" : [ {
        "endTime" : "1:30 PM",
        "startTime" : "9:00 AM"
      }, {
        "endTime" : "6:00 PM",
        "startTime" : "2:30 PM"
      } ],
      "weekday" : "Wednesday"
    }
  }

【问题讨论】:

  • 正如目前所写的,您的问题没有显示任何研究工作。请不要只是陈述您的要求,而是向我们展示您尝试过的内容并解释哪些内容不起作用或您遇到的问题。另外,请具体说明,因为“IST”有多种含义:I 可能代表印度、以色列或爱尔兰 - 或者您可能只是指计算机的当地时间。我们无法为您猜测。

标签: javascript timezone momentjs


【解决方案1】:

你可以这样尝试使用moment.utc():

var d = new Date('Mon Jan 01 2018 04:00:00 GMT+0530');
console.log('IST: ',  moment(d).format('hh:mm A'))

var utc = moment.utc(d).format('hh:mm A')
console.log('UTC: ',  utc)
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.21.0/moment.min.js"></script>

【讨论】:

    【解决方案2】:

    我对 Moment 不熟悉,但是使用纯 JavaScript 可以轻松完成:

    const ist2utc = (t) => {
      let d = new Date(t);
      d.setHours(d.getHours() - 5);
      d.setMinutes(d.getMinutes() - 30);
      return d;
    };
    

    例子:

    let x = ist2utc(new Date())
    console.log(x.toString())
    

    【讨论】:

    • 这不是一个好方法。您不是在调整时区,而是在选择不同的时间。
    • 不,我们不需要也不应该转换时区。它可能会影响其他脚本正在运行和其他程序正在计算的整个系统。您只需转换不同参考系统之间的时间点。不要修改环境或造成副作用。
    • 我不是这个意思。 Date 对象在内部是基于 UTC 的。您实际上是在选择早 5 小时 30 分的时间点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-14
    • 2014-05-11
    • 1970-01-01
    • 2015-05-23
    • 1970-01-01
    相关资源
    最近更新 更多