Nextrp [CPP] RU + Many GEOs Игра на карте России | NEXTRP

Javascript рассчитать разницу между двумя датами гг-мм-дд

javascript date datediff

3584 просмотра

5 ответа

385 Репутация автора

Я прочитал довольно много статей и вопросов по вычислению различий дат в javascript, но я не могу найти их для нужного мне формата.

Мне не нужны часы, минуты, верить или нет миллисекундам ... Мне просто нужны дни. Я проверяю, чтобы убедиться, что один день происходит в тот же день или за другим.

Формат даты 2010-10-05

Я попробовал это, но все, что я получаю, это NaN:

var diff =  Math.floor(( Date.parse(end_date) - Date.parse(start_date) ) / 86400000);
Автор: Oseer Источник Размещён: 05.10.2011 09:26

Ответы (5)


0 плюса

277514 Репутация автора

Сначала вы должны разобрать дату. Однако встроенный Date.parseможет не распознать его. Начните со следующего:

var dateStr = "2010-10-05";
var regex = /(\d{4})-(\d{2})-(\d{2})/.exec(dateStr);
var date = new Date(regex[1], regex[2] - 1, regex[3]);  //Tue Oct 05 2010 00:00:00 GMT+0200 (CEST)

Имея два экземпляра Dateобъектов, вы можете сравнить их так, как вам нравится. Однако ваше условие проверяет, находятся ли две даты в течение 24 часов, я думаю, это не то, что вам нужно, поскольку у ваших дат нет отметок времени ...

Автор: Tomasz Nurkiewicz Размещён: 05.10.2011 09:33

4 плюса

131805 Репутация автора

Решение

Правильно ли я понимаю, что вам на самом деле не нужно знать, сколько дней разнесены эти два дня, вам просто нужно знать, совпадают ли они с датой или с более поздней датой? В этом случае регулярное сравнение строк может сказать вам это, если вы постоянно используете формат «гггг-мм-дд», с двузначными месяцами и двузначными днями; например, «2010-10-05» <«2010-10-16».

Автор: ruakh Размещён: 05.10.2011 09:35

0 плюса

2693 Репутация автора

Я надеюсь, что это поможет вам

    t1="2010-12-20";  //date1
    t2="2010-12-30";  //date2

    var one_day=1000*60*60*24; 

    var x=t1.split("-");     
    var y=t2.split("-");

    var date1=new Date(x[0],(x[1]-1),x[2]);
    var date2=new Date(y[0],(y[1]-1),y[2]);

    var month1=x[1]-1;
    var month2=y[1]-1;

    _Diff=Math.ceil((date2.getTime()-date1.getTime())/(one_day));

alert(_Diff);
Автор: enloz Размещён: 05.10.2011 09:38

2 плюса

93379 Репутация автора

Прекрасно работает в Firefox:

JSFiddle

var diff,
  aDay = 86400000,
  start_date = "2010-10-05",
  end_date = "2010-10-15";

diff = Math.floor(
  (
    Date.parse(end_date) - Date.parse(start_date)
  ) / aDay);

console.log(diff)

//but perhaps this is safer:

diff = Math.floor(
  (
    Date.parse(
      end_date.replace(/-/g, '\/')
    ) - Date.parse(
      start_date.replace(/-/g, '\/')
    )
  ) / aDay);
console.log(diff)

Автор: mplungjan Размещён: 05.10.2011 09:40

0 плюса

61 Репутация автора

Просто сделайте это просто, вырежьте первые 10 символов, замените '-' на '', а затем возьмите end_date-start date.

Это ужасный способ сделать это, но он настолько прост, что работает на любом языке;)

Автор: Griffin Размещён: 05.10.2011 09:41
Вопросы из категории :
32x32