问题
I have a date saved in a string with this format: 2017-09-28T22:59:02.448804522Z this value is provided by a backend service.
Now, in javascript how can I compare if that timestamp is greater than the current timestamp? I mean, I need to know if that time happened or not yet taking in count the hours and minutes, not only the date.
回答1:
You can parse it to create an instance of Date and use the built-in comparators:
new Date('2017-09-28T22:59:02.448804522Z') > new Date()
// true
new Date('2017-09-28T22:59:02.448804522Z') < new Date()
// false
回答2:
You could also convert it to unix time in milliseconds:
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')
}
回答3:
const anyTime = new Date("2017-09-28T22:59:02.448804522Z").getTime();
const currentTime = new Date().getTime();
if(currentTime > anyTime){
//codes
}
回答4:
If you can, I would use moment.js * https://momentjs.com/
You can create a moment, specifying the exact format of your string, such as:
var saveDate = moment("2010-01-01T05:06:07", moment.ISO_8601);
Then, if you want to know if the saveDate is in the past:
boolean isPast = (now.diff(saveDate) > 0);
If you can't include an external library, you will have to string parse out the year, day, month, hours, etc - then do the math manually to convert to milliseconds. Then using Date object, you can get the milliseconds:
var d = new Date();
var currentMilliseconds = d.getMilliseconds();
At that point you can compare your milliseconds to the currentMilliseconds. If currenMilliseconds is greater, then the saveDate was in the past.
来源:https://stackoverflow.com/questions/46478974/compare-timestamps-in-javascript