【问题标题】:How to get UTC date in milliseconds format similiar to new Date().getTime() in javascript?如何以毫秒格式获取 UTC 日期,类似于 javascript 中的 new Date().getTime()?
【发布时间】:2015-10-21 09:54:03
【问题描述】:

为了解决我在部署项目时看到的时区问题,我需要将我当前的毫秒格式的日期转换为相应的 UTC 日期,以毫秒为单位。我该如何解决?

【问题讨论】:

  • 当您使用 UTC 日期时间值填充日期对象时,返回的毫秒数也是 UTC 格式。因为时区定义了世界表面上的一个区域。因此,时间总是绑定到一个位置是真实的。
  • var d = new Date(); var n = d.getUTCSeconds();这没有夏令时。如果你想考虑 DST 使用 momentjs
  • @murli2308 。感谢您的努力。但 getUTCseconds() 返回一个介于 0 和 59 之间的数字,这不是我所需要的。以毫秒为单位的长日期格式显示自 1970 年 1 月以来的毫秒数到给定日期
  • @AlanVargheseAniyan 使用 var d = new Date(); var n = new Date(d.toUTCString()).getTime();

标签: javascript date utc


【解决方案1】:

在尝试了不同的方法后,这是我发现的最有效和最有效的解决方案。

       var d = new Date(); //d can be any date we need to convert.
       var millisec= d.getTime()+ (d.getTimezoneOffset() * 60000);

getTimeZoneOffset() 以分钟为单位返回偏移时间

编辑

实际上,上面的代码添加本地日期的偏移量(而不是减去),我的服务器(UTC)允许取回服务器上的本地时间。

我需要服务器中的本地时间,正如我后来意识到的那样,我们在使用的 API 数据中有本地时间。

所以回到最初的问题,将本地转换为 UTC 的可能解决方案是:

       var d = new Date(); //d can be any date we need to convert.
       var millisec= d.getTime() - (d.getTimezoneOffset() * 60000);

后来在另一个项目中,我使用以下字符串形式的日期:

一个。从本地转换为 UTC(同时发送到服务器):

new Date().toUTCString()

b.转换回本地(同时从服务器获取数据到网络:

date.toLocaleDateString("en-AU", {
                weekday: 'short', year: 'numeric', month: 'short', day: 'numeric',
                hour12: false, hour: 'numeric', minute: 'numeric', second: 'numeric'
            });

【讨论】:

    【解决方案2】:

    这是一个很大的“蠕虫罐头”,因为时区在一年中进入和离开夏令时,然后有时会有所不同。

    如果您不介意您的时间可能有 1 小时的误差,那么最简单的做法是添加或减去您拥有的时区与 UTC 之间的毫秒数差异。虽然我建议你看一下 moment-timezone 库,但要做到这一点:http://momentjs.com/timezone/

    【讨论】:

    • 我已经尝试过 js 日期函数 getTimezoneOffset() 并且它在我的情况下工作。是否有任何情况下这可能不起作用?
    • 只要您总是希望时间显示在用户自己的本地时区中就可以了。因此,今天世界标准时间下午 12 点对波士顿的用户显示为上午 8 点,对罗马的用户显示为下午 1 点。如果这对您的应用程序来说是正确的,那就太好了!
    【解决方案3】:

    Javascript 有一个功能,getTime():

    function myFunction() {
        var d = new Date();
        var n = d.getTime();
        return n;
    }
    

    【讨论】:

      【解决方案4】:
      • 在这里,我提供了一种最简单的解决方案来转换我们的本地 保存在服务器中的时间到 UTC 毫秒。
      const utcDate = new Date().toUTCString();
      // Mon, 21 Dec 2020 11:13:16 GMT
      
      • 这会将日期打印为 UTC 字符串,如上所述。你可以转换它 使用 UTC 毫秒,
      const sendToServer = Date.parse(utcDate);  //1608549196000
      
      • 您可以使用以下方法将该 UTC 毫秒转换为您的本地时间,

      const myLocalDate = new Date(1608549196000);
      // 202000 年 12 月 22 日星期二:13:16 GMT+1300(新西兰夏令时间)

      谢谢!!

      【讨论】:

        【解决方案5】:
        var myDate = new Date(); 
        var utcDate = myDate.toUTCString();
        var milliSec = utcDate.getMilliseconds();
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-10-05
          • 1970-01-01
          • 2012-07-11
          • 2016-07-14
          • 1970-01-01
          • 2019-12-05
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多