最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - how to calculate number of days between today and given date and code for getTime()? - Stack Overflow

programmeradmin7浏览0评论

I want to calculate number of days between today and a given date and check whether how many days remaining until today or how many days past from today.

var today = new Date();
var date_to_reply = new Date('2012-10-15');
var timeinmilisec = today.getTime() - date_to_reply.getTime();
console.log( Math.floor(timeinmilisec / (1000 * 60 * 60 * 24)) );

this gives me 5 as answer but how should i get (-5) since the date_to_reply is 5days past from today?

is this the correct way to calculate any given date?

Regards

I want to calculate number of days between today and a given date and check whether how many days remaining until today or how many days past from today.

var today = new Date();
var date_to_reply = new Date('2012-10-15');
var timeinmilisec = today.getTime() - date_to_reply.getTime();
console.log( Math.floor(timeinmilisec / (1000 * 60 * 60 * 24)) );

this gives me 5 as answer but how should i get (-5) since the date_to_reply is 5days past from today?

is this the correct way to calculate any given date?

Regards

Share Improve this question edited Dec 24, 2018 at 14:54 Renuka Golla 36 bronze badges asked Oct 20, 2012 at 6:54 Gihan LasitaGihan Lasita 3,05314 gold badges49 silver badges66 bronze badges
Add a comment  | 

4 Answers 4

Reset to default 10

What you are doing is correct: You want to calculate the difference (as number of days) between two dates. A difference can't be smaller than zero.

Although your date_to_reply is already in the past, theres still a 5 day difference.

So, everythings fine - it's the correct way.

EDIT: If you want a negative value as result, try this:

var today = new Date();
var date_to_reply = new Date('2012-10-15');
var timeinmilisec = date_to_reply.getTime() - today.getTime();
console.log( Math.ceil(timeinmilisec / (1000 * 60 * 60 * 24)) );

Remember you need to Math.ceil the final result instead of rounding it down with Math.floor().

If you want the value to be negative (indicating date_to_reply is in the past) you should subtract the past date from the current: date_to_reply.getTime() - today.getTime().

Check this link for ways to calculate more diffentiated results.

If you swap the order of the dates, you'll get the negative number you want.

Better yet you could write a function that does this.

It could subtract the first parameter from the second.

The second parameter could default to today.

function diffDates(dateOne, dateTwo) {
    if (typeof dateTwo === 'undefined') {
        dateTwo = new Date();
    }
    return dateOne.getTime() - dateTwo.getTime();
}

It would be better to have the function operate on numbers rather than dates.

That would be more flexible, but I'm typing on an iPad right now!

Its obvious because today's date is greater than the previous. So either you need to make it negative on your own or use this

var timeinmilisec = date_to_reply.getTime()-today.getTime();
发布评论

评论列表(0)

  1. 暂无评论