目前,我正在Node.js中使用Node.js时区。,我想取两位17位时间戳之间的差额。例如,我有两个时间戳:20180712080000000 (YYYYMMDDHHmmssSSS),即2018/07/12 10:00:00 000和20180712060000000 (YYYYMMDDHHmmssSSS),即2018/07/12 08:00:00 000。如果我考虑这两个时间戳之间的差异,那么输出可能是20000000 (实际上应该是2小时)。如果我将两个时间戳的差( 20000000 )转换为小时,那么回答是5.56小时,但应该是2小时。
我是不是遗漏了什么?
请随时纠正我。
到目前为止我试过:
let starttime = 20180712060000000; // UTC + 2
let endtime = 20180712080000000; // UTC + 2
console.log("Difference is ",endtime-starttime);发布于 2018-07-12 09:33:10
如果必须使用这种时间戳(17个字符长的字符串),则可以将它们转换为Date对象,如下所示:
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()发布于 2018-07-12 09:25:34
您使用的数字是无效的时间戳。
您可以向Date构造函数提供的时间戳是自Epoch以来的毫秒数。
您可以使用date.getTime()从约会中获得它
let starttime = new Date("2018-07-12T06:00:00").getTime(); // assuming local TZ发布于 2018-07-12 09:36:41
使用这个图书馆进行干净和更好的代码。
https://stackoverflow.com/questions/51301799
复制相似问题