比较javascript中的时间戳

时间:2017-09-28 22:04:49

标签: javascript reactjs timestamp

我将日期保存在具有以下格式的字符串中:2017-09-28T22:59:02.448804522Z此值由后端服务提供。

现在,在javascript中如何比较该时间戳是否大于当前时间戳?我的意思是,我需要知道那个时间是否已经发生,而不仅仅计算时间和分钟,而不仅仅是日期。

4 个答案:

答案 0 :(得分:9)

您可以解析它以创建Date的实例并使用内置的比较器:

new Date('2017-09-28T22:59:02.448804522Z') > new Date()
// true
new Date('2017-09-28T22:59:02.448804522Z') < new Date()
// false

答案 1 :(得分:4)

您还可以将其转换为以毫秒为单位的unix时间:

&#13;
&#13;
console.log(new Date('2017-09-28T22:59:02.448804522Z').valueOf())

const currentTime = new Date('2017-09-28T22:59:02.448804522Z').valueOf()
    
const expiryTime = new Date('2017-09-29T22:59:02.448804522Z').valueOf()

if (currentTime < expiryTime) {
    console.log('not expired')
}
&#13;
&#13;
&#13;

答案 2 :(得分:3)

如果可以,我会使用moment.js * https://momentjs.com/

您可以创建片刻,指定字符串的确切格式,例如:

var saveDate = moment("2010-01-01T05:06:07", moment.ISO_8601);

然后,如果你想知道saveDate是否在过去:

boolean isPast =(now.diff(saveDate)&gt; 0);

如果您不能包含外部库,则必须将字符串解析出年,日,月,小时等 - 然后手动进行数学运算以转换​​为毫秒。然后使用Date对象,您可以获得毫秒:

var d = new Date();
var currentMilliseconds = d.getMilliseconds();

此时,您可以将毫秒与currentMilliseconds进行比较。如果currenMilliseconds更大,那么saveDate就是过去。

答案 3 :(得分:2)

const anyTime = new Date("2017-09-28T22:59:02.448804522Z").getTime();
const currentTime = new Date().getTime();
if(currentTime > anyTime){
    //codes
}