Как получить продолжительность дней с сегодняшнего дня до указанной даты в JavaScript? - PullRequest
1 голос
/ 15 октября 2010

Предположим, что указанная дата равна 2010-11-9, как получить продолжительность программно?

Ответы [ 4 ]

2 голосов
/ 15 октября 2010

Как насчет этого с здесь ?

function days_between(date1, date2) {

    // The number of milliseconds in one day
    var ONE_DAY = 1000 * 60 * 60 * 24

    // Convert both dates to milliseconds
    var date1_ms = date1.getTime()
    var date2_ms = date2.getTime()

    // Calculate the difference in milliseconds
    var difference_ms = Math.abs(date1_ms - date2_ms)

    // Convert back to days and return
    return Math.round(difference_ms/ONE_DAY)

}
1 голос
/ 15 октября 2010
Math.abs(new Date() - Date.parse("Nov 9, 2010")) / ( 60*60*24) / 1000

возвращается:

24.786491909722223
0 голосов
/ 15 октября 2010
function daysTo(from, to){
    // to and from may be
    // strings in the form'yyyy-mm-dd' or 'yyyy-m-d'
    // split the strings on dashes and possible leading 0, 
    // to avoid '08' becoming octal '10'

    to= to.split(/\-0?/);
    to= new Date(+to[0], to[1]-1, +to[2]);

    from= from.split(/\-0?/);
    from= new Date(+from[0], from[1]-1, +from[2]);

    return Math.round((to-from)/86400000));
}

daysTo ('2010-9-10', '2011-9-10') // or daysTo ('2010-09-10', '2011-09-10')

/ * возвращаемое значение: (число) 365 * /

Округление результата сглаживает смещения летнего времени.

Если вы создадите новую дату без указания времени, она будет установлена ​​в полночь по местному времени.

Вычитание объектов даты преобразует их в миллисекунды - вам не нужно использовать getTime ().

0 голосов
/ 15 октября 2010

Это не точно , но вы можете вызвать getTime() из экземпляра Date, чтобы получить количество миллисекунд с начала эпохи.Вычтите два из них и разделите на число миллисекунд в дне.

Если хотите, вы можете перенести даты в начало их дней, явно установив часы, минуты и секунды в ноль:

function startOfDay(d) {
  d.setHours(0); d.setMinutes(0); d.setSeconds(0); d.setMilliseconds(0);
  return d;
}

var startOfToday = startOfDay(new Date());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...