2010-06-09 23 views
35

Mam dwa pola String, które reprezentują Daty na mojej stronie i chciałbym porównać te dwa pola, aby wiedzieć, czy moja pierwsza data to < druga data. Jak mogę to zrobić?Jak porównać dwie wartości daty z jQuery

<tr> 
    <td align="right">First Date: </td> 
    <td align="left"> <html:text name="addPublicationForm" styleId="firstDate" property="firstDate" maxlength="10"/></td> 
</tr> 
<tr> 
    <td align="right">Second Date: </td> 
    <td align="left"> <html:text name="addPublicationForm" styleId="secondDate" property="secondDate" maxlength="10"/></td> 
</tr> 

Odpowiedz

2

Gdy jesteś w stanie zanalizować te sznurki do Date obiektu porównując je łatwo (za pomocą operatora <). Parsowanie dat zależy od formatu. Możesz rzucić okiem na Datejs, co może uprościć to zadanie.

+0

Chcę użyć walidatora jquery – Mercer

+0

+1 dla 100% poprawnej odpowiedzi. @downvote, proszę oświecić nas, bo tu jest coś nie tak. – jAndy

+0

@Mercer, o czym mówisz? Czy odnosisz się do jakiejś wtyczki? –

23

Jeśli są również za pomocą jQuery UI, w szczególności datepicker, można użyć $.datepicker.parseDate(format, string) aby włączyć datę ciągi w JavaScript Date obiektu, który można następnie porównać przy użyciu standardowego < i >

+1

Nie powinien zwracać obiektu 'Date' z kodu, aby go przekonwertować na milisekundy przy użyciu' Date.parse' (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/ parsować? redirectlocale = en-US i redirectslug = JavaScript% 2FReference% 2FGlobal_Objects% 2FDate% 2Fparse) przed dokonaniem porównania? –

+0

Parsowanie ciągów dat za pomocą konstruktora Date (i Date.parse, są one równoważne) jest stanowczo odradzane ze względu na różnice i niespójności w przeglądarkach: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date # Two_digit_years_map_to_1900 _-_ 1999 –

48
var startDt=document.getElementById("startDateId").value; 
var endDt=document.getElementById("endDateId").value; 

if((new Date(startDt).getTime() > new Date(endDt).getTime())) 
{ 
    ---------------------------------- 
} 
6
var startDate = $('#start_date').val().replace('-','/'); 
var endDate = $('#end_date').val().replace('-','/'); 

if(startDate > endDate){ 
    // do your stuff here... 
} 
+0

Czy wiesz, dlaczego moje zawodzi? http://stackoverflow.com/questions/32015131/why-does-each-function-in-jquery-not-iterate – Si8

+1

Drugie "-" nie jest zastępowane, spróbuj/-/g. – Bhimbim

+0

witaj, ta funkcja będzie działać, ale jak wspomniano powyżej, tylko jeden z hipen zostanie zastąpiony, więc możesz użyć var startDate = $ ('# data_oddziału'). Val(). Replace ('-', '/'). zastąpić('-','/'); var endDate = $ ('# end_date'). Val(). Replace ('-', '/'). Replace ('-', '/'); jeśli (startDate> endDate) { // zrób swoje rzeczy tutaj ... } –