Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 17位时间戳之间的差异_Javascript_Node.js_Timestamp - Fatal编程技术网

Javascript 17位时间戳之间的差异

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转换为小时,

目前,我正在Node.js中使用
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