Сравнить строку с текущей датой в javascript

У меня есть строка из поля ввода, которое я использую для даты с таким форматом, как этот 25-02-2013. Теперь я хочу сравнить строку с текущей датой. Я хочу знать, является ли строка более старой или более новой, чем сегодняшняя дата.

Любые предложения?

Ответ 1

    <script type="text/javascript">

var q = new Date();
var m = q.getMonth()+1;
var d = q.getDay();
var y = q.getYear();

var date = new Date(y,m,d);

mydate=new Date('2011-04-11');
console.log(date);
console.log(mydate)

if(date>mydate)
{
    alert("greater");
}
else
{
    alert("smaller")
}


</script>

Ответ 2

Точная сопоставление даты и исправленная ошибка из принятого ответа

var q = new Date();
var m = q.getMonth();
var d = q.getDate();
var y = q.getFullYear();

var date = new Date(y,m,d);

mydate=new Date('2011-04-11');
console.log(date);
console.log(mydate)

if(date>mydate)
{
    alert("greater");
}
else
{
    alert("smaller")
}

Ответ 3

Вы можете использовать простой оператор сравнения, чтобы узнать, больше ли дата:

var today = new Date();
var jun3 = new Date("2016-06-03 0:00:00");

if(today > jun3){
    // True if today is on or after June 3rd 2016
}else{
    // Today is before June 3rd
}

Причина, по которой я добавил 0:00:00 ко второй переменной, заключается в том, что без нее она будет сравниваться с временем UTC (Greenwich), которое может дать вам нежелательные результаты. Если вы установите время на 0, то оно будет сравниваться с пользовательской локальной полуночью.

Ответ 4

Использование Javascript Date объекта будет проще для вас. Но поскольку объект Date не поддерживает ваш формат, я думаю, вам нужно проанализировать свою строку ввода (например: 25-02-2013) с помощью "-", чтобы получить Date month и year, а затем использовать Date для сравнения.

var x ='23-5-2010';
var a = x.split('-');
 var date = new Date (a[2], a[1] - 1,a[0]);//using a[1]-1 since Date object has month from 0-11
 var Today = new Date();
 if (date > Today)
    alert("great");
 else
    alert("less");

Ответ 5

Если ваш ввод даты находится в формате "25-02-2013", вы можете разделить строку на DD, MM и YYYY с помощью метода split():

var date_string="25-02-2013";

var day  = parseInt(date_string.split("-")[0]);
var month= parseInt(date_string.split("-")[1]);
var year = parseInt(date_string.split("-")[2]);

Функция parseInt() используется для превращения строки в целое число. Затем три переменных можно сравнить с свойствами объекта Date().

Ответ 6

Наиболее важные моменты, которые необходимо запомнить при сравнении дат

  • Обе даты должны быть в том же формате, чтобы получить точный результат.
  • Если вы используете формат даты и хотите только провести сравнение даты, убедитесь, что вы конвертируете его в соответствующий формат.

Вот код, который я использовал.

           var dateNotifStr = oRecord.getData("dateNotif");
           var today = new Date();       
           var todayDateFormatted = new Date(today.getFullYear(),today.getMonth(),today.getDate());

           var dateNotif=new Date(dateNotifStr);
           var dateNotifFormatted = new Date(dateNotif.getFullYear(),dateNotif.getMonth(),dateNotif.getDate());

Ну, это можно оптимизировать дальше, но это должно дать вам четкое представление о том, что требуется для создания дат в едином формате.