代码之家  ›  专栏  ›  技术社区  ›  Saurabh Chauhan

17位时间戳之间的差异

  •  -1
  • Saurabh Chauhan  · 技术社区  · 8 年前

    目前,我正在与 UTC+02:00 node.js中的时区。 我想取两个17位时间戳的差额 .例如,我有两个时间戳: 20180712080000000 (YYYYMMDDHHmmssSSS) 2018/07/12 10:00:00 000 20180712060000000 (YYYYMMDDHHmmssSSS) 2018/07/12 08:00:00 000 .如果我取这两个时间戳之间的差异,那么输出可能是 20000000 (实际上应该是2小时)。如果我将转换两个时间戳的差,即 2000万 到小时后,答案是 5.56 但是应该是 2 高分辨率分光计。

    我错过什么了吗?

    请随时纠正我。

    到目前为止,我尝试了:

    let starttime = 20180712060000000; // UTC + 2
    let endtime =   20180712080000000; // UTC + 2
    console.log("Difference is ",endtime-starttime);
    
    3 回复  |  直到 8 年前
        1
  •  2
  •   cornacchia    8 年前

    如果必须使用这种时间戳(17个字符长的字符串),可以将它们转换为如下日期对象:

        var date1 = '20180712060000000'
        var date2 = '20180712080000000'
    
        function timestampToDate(dateString) {
          return new Date(dateString.substring(0, 4), 
            parseInt(dateString.substring(4, 6)) - 1, 
            dateString.substring(6, 8), 
            dateString.substring(8, 10), 
            dateString.substring(10, 12), 
            dateString.substring(12, 14), 
            dateString.substring(14, 16))
        }
    
        var date1Object = timestampToDate(date1)
        var date2Object = timestampToDate(date2)
        
        var difference = Math.abs(date1Object - date2Object) // this will hold the difference in milliseconds
        var differenceInHours = difference / 36e5
        
        console.log(differenceInHours)

    为了避免像那样解剖字符串,可以考虑使用类似时间库的时刻( https://momentjs.com/ )

    现在你可以这样做了:

    var date1 = moment('20180712060000000', 'YYYYMMDDHHmmssSSS')
    var date2 = moment('20180712080000000', 'YYYYMMDDHHmmssSSS')
    
    var difference = moment.duration(date1 - date2).hours()
    
        2
  •  0
  •   Denys Séguret    8 年前

    您使用的数字不是有效的时间戳。

    您可以提供给 Date constructor是自epoch以来的毫秒数。

    你可以用 date.getTime() 以下内容:

    let starttime = new Date("2018-07-12T06:00:00").getTime(); // assuming local TZ
    
        3
  •  0
  •   user5208204    8 年前

    使用 this library 为了干净和更好的代码。

    推荐文章