Javascript 17位时间戳之间的差异
目前,我正在Node.js中使用Javascript 17位时间戳之间的差异,javascript,node.js,timestamp,Javascript,Node.js,Timestamp,目前,我正在Node.js中使用UTC+02:00timezone我想取两个17位时间戳之间的差值。例如,我有两个时间戳:2018071208000000(yyyymmddhhmmssss)2018/07/12 10:00:00 000和20180712060000000(yyyymmddhhmmssss)2018/07/12 08:00:00 000。如果我将取这两个时间戳之间的差值,那么输出可能是20000000(实际上应该是2小时)。如果我将两个时间戳的差值,即20000000转换为小时,
UTC+02:00
timezone我想取两个17位时间戳之间的差值。例如,我有两个时间戳:2018071208000000(yyyymmddhhmmssss)
2018/07/12 10:00:00 000和20180712060000000(yyyymmddhhmmssss)
2018/07/12 08:00:00 000。如果我将取这两个时间戳之间的差值,那么输出可能是20000000
(实际上应该是2小时)。如果我将两个时间戳的差值,即20000000
转换为小时,那么答案是5.56
hrs,但应该是2
hrs
我错过什么了吗
请随时纠正我
到目前为止,我试过:
let starttime = 20180712060000000; // UTC + 2
let endtime = 20180712080000000; // UTC + 2
console.log("Difference is ",endtime-starttime);
您使用的数字不是有效的时间戳 可以提供给
Date
构造函数的时间戳是自Epoch以来的毫秒数
您可以使用date.getTime()
从日期获取它:
您使用的数字不是有效的时间戳 可以提供给
Date
构造函数的时间戳是自Epoch以来的毫秒数
您可以使用date.getTime()
从日期获取它:
如果必须使用这种时间戳(17个字符长的字符串),可以将其转换为如下日期对象:
var date1='20180712060000000'
var date2='20180712080000000'
函数timestampToDate(日期字符串){
返回新日期(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)//这将以毫秒为单位保存差异
var差异小时=差异/36e5
console.log(differenceInHours)
如果必须使用这种时间戳(17个字符长的字符串),可以将它们转换为如下日期对象:
var date1='20180712060000000'
var date2='20180712080000000'
函数timestampToDate(日期字符串){
返回新日期(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)//这将以毫秒为单位保存差异
var差异小时=差异/36e5
console.log(differenceInHours)
用于干净更好的代码。用于干净更好的代码。这不是构建时间戳的方式@DenysSéguret:我知道,但是提到的时间戳在我当前的项目中是兼容的,所以,这不是你构建时间戳的方式@DenysSéguret:我知道,但是提到的时间戳在我当前的项目中是兼容的,所以它意味着我需要做console.log(“区别在于”,endtime.getTime()-starttime.getTime())代码>我是否正确?此差异将以毫秒为单位。两个小时的720000
感谢您的及时回复。但是如何将20180712060000000
转换为2018-07-12T06:00:00
?这意味着我需要执行console.log(“区别在于”,endtime.getTime()-starttime.getTime())代码>我是否正确?此差异将以毫秒为单位。两个小时的720000
感谢您的及时回复。但是如何将20180712060000000
转换为2018-07-12T06:00:00
?谢谢您的解决方案。我正在使用moment.js
库。使用moment.js
库有什么简单的方法吗?我找不到。为您更新了答案moment.js
:您能再检查一下吗?我得到了TypeError:(date2-date1)。duration不是一个函数
错误。是的,很抱歉我有一个错误,我现在更新并测试了它;)谢谢你的完美解决方案!哎呀。。。您需要从月份中减去一(月份以零为基础),谢谢您的解决方案。我正在使用moment.js
库。使用moment.js
库有什么简单的方法吗?我找不到。为您更新了答案moment.js
:您能再检查一下吗?我得到了TypeError:(date2-date1)。duration不是一个函数
错误。是的,很抱歉我有一个错误,我现在更新并测试了它;)谢谢你的完美解决方案!哎呀。。。您需要从月份中减去一(月份以零为基础)
let starttime = new Date("2018-07-12T06:00:00").getTime(); // assuming local TZ