#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
конструктору.