2015-07-05 3 views
1

У меня проблема при сравнении двух строк (оба являются переменными, означающими, что это могут быть любые даты). Формат этих двух строк - yyyy-MM-dd.Как сравнить две строковые переменные с javascript?

У меня есть две строки дат «строка1» и «строка2», а строка1 - с использованием формата даты yyyy-MM-dd и строки 2 с использованием того же формата yyyy-MM-dd. Что я должен использовать, если я хочу, чтобы сравнить его с логикой, когда string1 < строка2 возвращенная строка результата, как «X»

Что я тока у которых не работает первой попытке использовать .substring, чтобы получить правильный формат из строки 1.

var string1 = str1.substring(0, 5) + str1.substring(5, 8) + str1.substring(8, 11); 
var string2 = str2 

if (string1 < string2) { 
dateresult= 'X'; 
} 

Любая идея будет оценена по достоинству.

Заранее спасибо.

+2

Если строки уже в формате 'YYYY-MM-dd', то вы можете просто сделать' '<сравнение на них напрямую и это должно сработать, потому что хотя это сравнение с лексической строкой, с датами в этом формате лексический порядок строк также является порядком даты. Ваша вещь с '.substring()' бессмысленна - она ​​просто извлекает первые 10 символов исходной строки в три части, а затем помещает их обратно в одном порядке (если только ваш исходный ввод не имел больше символов после даты?) , – nnnnnn

+0

Странная вещь, если я определяю строку 1 для некоторой даты фиксации, она работает. например var string1 = '1881-05-09'; но если я использую .substring для его форматирования, это не сработает. Вот почему я понятия не имею, где пошло не так. – James0419

+0

Пожалуйста, отредактируйте вопрос, чтобы показать свои фактические данные. (Например, как вы присвоили значения 'str1' и' str2'.) – nnnnnn

ответ

1

Дата создания объектов и использовать сравнение на них:

var date1 = new Date('2015-01-01'), 
    date2 = new Date('2015-01-01'); 

console.log(date1 < date2); 
console.log(date1 >= date2); 
+0

Держитесь. yyyy-MM-dd представляет собой «текст с двумя буквами в алфавитном порядке», поэтому это должно быть что-то вроде «2015-Jun-12», а не «2015-06-12». –

+0

@ TaoP.R. - В * некоторых * языках функции форматирования даты могут использовать MM для обозначения имен строковых месяцев, таких как «Jun» или «Aug», но на других языках это означает двузначный месяц, например «06» или «08». У Javascript есть функция форматирования даты, которая определяет, что означает MM * в JavaScript *? В любом случае ОП дал конкретный пример в комментарии: ''1881-05-09''. – nnnnnn

+0

Новая дата ('2015-Jan-01') выводит дату, аналогичную новой дате ('2015-01-01'). JavaScript не имеет реального форматирования даты. –

1

Просто создайте новые даты для каждого, а затем сравните их.

var x = new Date('2013-05-23'); 
var y = new Date('2013-05-24'); 
alert(x < y); //true 
Смежные вопросы