Сравнение даты и времени Javascript

#javascript #datetime

#javascript #дата и время

Вопрос:

Допустим, у меня есть следующее: дата начала: «2011-10-20 14:30» Дата окончания: «2011-10-20 17:30»

Я хочу сравнить StartDate и EndDate, если StartDate больше, чем EndDate. По сути, я действительно хочу сравнить объект Date и объект Date, а не строку и строку.

Кто-нибудь может помочь с этим?

Комментарии:

1. Если вы можете гарантировать этот формат, вы можете просто сравнить строку > и все равно получить правильный результат. Но действительно ли ваш вопрос «как мне преобразовать строку в этом формате в объект даты JS»?

2. Я не совсем уверен, что если мы сравним в строке, это даст правильный результат. позвольте мне попробовать!

3. Он будет работать как сравнение строк, если формат идет год, затем месяц, затем день и имеет двузначный месяц, день, час и минуту, например, «2011-03-09 02:05». Это не будет работать как сравнение строк, если некоторые из ваших дат имеют однозначный месяц или день, например «2011-3-9 2:05».

Ответ №1:

Если вы замените пробел в строках на «T», вы сможете проанализировать их напрямую, используя конструктор date:

 var startDate = new Date(('2011-10-20 14:30').replace(' ', 'T'));
var endDate = new Date(('2011-10-20 17:30').replace(' ', 'T'));

alert( startDate   ' is '    
      (startDate - endDate > 0? 'after ' : 'on or before ')    endDate );
  

Редактировать

Или вы можете заменить ‘-‘ на ‘/’ для IE и всех остальных (я думаю …):

 var startDate = new Date(('2011-10-20 14:30').replace(/-/g,'/'));
var endDate = new Date(('2011-10-20 17:30').replace(/-/g,'/'));
  

Но функция синтаксического анализа может быть лучше.

Ответ №2:

 d1 = new Date(startDate);
d2 = new Date(endDate);
if (d1>d2) alert('greater');
  

Комментарии:

1. Поскольку даты, они приведут к недопустимой дате, если будут переданы непосредственно Date конструктору.