2013-02-25 4 views
10

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

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

+0

Я думаю, вы должны использовать http://stackoverflow.com/a/8215648/1520671 –

ответ

0
<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> 
+8

@Leon van der Veen - Этот код имеет ошибку. Если текущий месяц - декабрь, тогда результат неправильный .... проверьте его (текущая дата 3/12/2012 и дата ввода 23/12/2012) .. пожалуйста, проверьте перед отправкой ответов ... – 999k

+0

Я думаю, что вам нужно чтобы обе даты были в формате iso YYYY-MM-DD, чтобы избежать ошибки, можете использовать toISOString() – Loopo

0

Если ввод даты в формате «25-02-2013», вы можете разделить строку на ДД, ММ и YYYY, используя метод расщепления():

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().

3

Использование Javascript Date Объект будет проще для вас. Но поскольку объект Date не поддерживает ваш формат, я думаю, вам нужно проанализировать свою строку ввода (например: 25-02-2013) с помощью «-», чтобы получить datemonth и 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"); 
+0

Строка 3 должна быть 'var date = new Date (a [0], a [1] - 1, a [2]) ; ' – k29

+0

@ k29 № Дата Объект принимает аргументы в году, месяце, дневном порядке. С входной строкой OP a [2] - год, поэтому мое утверждение верное. Пожалуйста, проверьте – 999k

+0

Извините, что вы правы. Я думаю, что я скопировал одну из строк из других ответов, когда тестировал код. – k29

12

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

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") 
} 
4

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

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 (Гринвич), что может дать вам нежелательные результаты. Если вы установите время на 0, то оно будет сравниваться с локальной полночь пользователя.

0

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

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

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

  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()); 

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