我将日期保存在具有以下格式的字符串中:2017-09-28T22:59:02.448804522Z
此值由后端服务提供。
现在,在javascript中如何比较该时间戳是否大于当前时间戳?我的意思是,我需要知道那个时间是否已经发生,而不仅仅计算时间和分钟,而不仅仅是日期。
答案 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时间:
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;
答案 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
}