compare timestamps in javascript

Viewed 53404

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.

4 Answers

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

Conveniently, the date is already in an standard format that Date knows how to parse (looks like ISO8601).

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')
}

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

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.

Related