2008-12-03 18 views

cevap

200
if (date1.getTime() > date2.getTime()) { 
    alert("The first date is after the second date!"); 
} 

Reference to Date object

+2

O öneri vardı, ama getTime işlevi tanımlanmamış bir değer döndürür. Ben gerçekten getTime() anlamıyorum sanmıyorum. Bunun önceden tanımlanmış bir işlev olması mı gerekiyor? –

+1

, bunun http://www.comptechdoc.org/independent/web/cgi/javamanual/javadate.html – IsmailS

+3

yardımcı olacağını umuyoruz chrome ve firefox 'date1> date2' desteklerini destekler, yani getTime() kısmı olmadan. Diğer tarayıcıları bilen var mı? –

4

Eğer tamsayı içine iki tarihleri ​​dönüştürmek ise January 1, 1970. göreli (milisaniye cinsinden) zaman damgası almak için bir Date nesne üzerinde getTime() yöntemini kullanabilirsiniz zaman damgaları, daha sonra bunları çıkararak farkı karşılaştırabilirsiniz. Sadece o zaman, saniye 1000 ile dakika 60, bölmek, böylece sonuç milisaniye cinsinden olacak vs.

6

JavaScript'in tarihleri ​​aynı karşılaştırma operatörlerini tipleri kullandığınız veri kalanı kullanılarak karşılaştırılabilir:>, <, < = ,> =, ==,! =, ===,! ==.

bir başka geçmişe B.

daha

ise iki tarihleri ​​A ve B, daha sonra A < B var Ama ne sorun yaşadığınız bir tarihte bir dize dönüm olduğu gibi geliyor ise . Sen yapmak sadece yeni bir tarihi için bir argüman olarak dize ileterek:

var someDate = new Date("12/03/2008"); 

göründüğü gibi istediğiniz dize, form alanının değer ise veya bu olabilir:

var someDate = new Date(document.form1.Textbox2.value); 

Bu dize, JavaScript'in bir tarih olarak tanıdığı bir şey değilse, bir Tarih nesnesi almaya devam edersiniz, ancak "geçersiz" olacaktır. Başka bir tarihle herhangi bir karşılaştırma yanlış döner. Bir dizeye dönüştürüldüğünde "Geçersiz Tarih" olur. Onun getTime() işlevi NaN döndürecek ve tarihin kendisi true dönecektir isNaN() çağrısı; Bir dizenin geçerli bir tarih olup olmadığını kontrol etmenin kolay yolu budur.

+1

Eğer dize bir tarihe ayrıştırılamıyorsa ne olur? –

+0

Öyleyse, hala bir Tarih nesnesi alıyorsunuz, ancak geçersiz. Başka bir tarihle herhangi bir karşılaştırma yanlış döner. Onun getTime() işlevi NaN döndürecek ve tarihin kendisinin true olarak döndürüleceği isNaN(). Bir dizeye dönüştürüldüğünde "Geçersiz Tarih" olur. –

+21

Bu, == (en azından firefox'ta) ile çalışmaz. İki tarihin doğrudan karşılaştırılması her zaman false değerini döndürürse, yukarıda belirtildiği gibi getTime() yöntemini kullanmanız gerekir. –

1

Doğrusu === iç Nesnenin referanslar ve hiçbir şey ilişkin tarih karşılaştırmaktadır gibi

görünüyor Tarihi valueOf yerine === yöntemini veya! == kullanmak.

0

Sen uygulamak için aşağıdaki komut dosyası kodu ekleyerek deneyebilirsiniz bu: Sen tarih değeri bir biçime AA/GG/YYYY ile iki tarih arasında en yüksek olan denetimi için bu kodu deneyebilirsiniz

if(CompareDates(smallDate,largeDate,'-') == 0) { 
    alert('Selected date must be current date or previous date!'); 
return false; 
} 

function CompareDates(smallDate,largeDate,separator) { 
    var smallDateArr = Array(); 
    var largeDateArr = Array(); 
    smallDateArr = smallDate.split(separator); 
    largeDateArr = largeDate.split(separator); 
    var smallDt = smallDateArr[0]; 
    var smallMt = smallDateArr[1]; 
    var smallYr = smallDateArr[2]; 
    var largeDt = largeDateArr[0]; 
    var largeMt = largeDateArr[1]; 
    var largeYr = largeDateArr[2]; 

    if(smallYr>largeYr) 
     return 0; 
else if(smallYr<=largeYr && smallMt>largeMt) 
    return 0; 
else if(smallYr<=largeYr && smallMt==largeMt && smallDt>largeDt) 
    return 0; 
else 
    return 1; 
} 
10
new Date('1945/05/09').valueOf() < new Date('2011/05/09').valueOf() 
+0

merhaba bu formatı kullanın, o zaman bu var dt = yeni Tarih ("2016-01-01") zaman sıfır değil – Paresh3489227

+0

yanlış görüntüleniyor ne formatta yanlış olduğunu ne endişeniz nedir? –

+0

çalışıyoruz teşekkürler – Paresh3489227

0

:

function d_check() { 
    var dl_sdt=document.getElementIdBy("date_input_Id1").value; //date one 
    var dl_endt=document.getElementIdBy("date_input_Id2").value; //date two 

    if((dl_sdt.substr(6,4)) > (dl_endt.substr(6,4))) { 
     alert("first date is greater"); 
     return false; 
    } 

    else if((((dl_sdt.substr(0,2)) > (dl_endt. 
     substr(0,2)))&&(frdt(dl_sdt.substr(3,2)) > (dl_endt.substr(3,2))))|| 
     (((dl_sdt.substr(0,2)) > (dl_endt.substr(0,2)))&& 
     ((dl_sdt.substr(3,2)) < (dl_endt.substr(3,2))))|| 
     (((dl_sdt.substr(0,2)) == (dl_endt.substr(0,2)))&&((dl_sdt.substr(3,2)) > 
     (dl_endt.substr(3,2))))) { 
      alert("first date is greater"); 
     return false; 
    } 

    alert("second date is digher"); 
    return true; 
} 

/* Bu kontrol için .... bir form oluşturmak ve kimliği olmalıdır iki tarih inputs.The tarih formatına 's vermek aa/gg/yyyy veya aa-gg-yyyy veya aa: gg: yyyy ya da mm.dd.yyyy bunu beğendi.*/

+0

'da çok iyi işler yaptı. Çok iyi bir özellik. Kullanıcı girişinin her zaman belirli bir tarih desenini (alt dizelerin kullanımı) izleyeceği varsayılır. Bazı giriş doğrulaması olsa da, bunu kullanabilirim, teşekkür ederim. – Kingsolmn

+0

Bu, tarih formatı hakkında bazı büyük varsayımlar yapar ve uluslararası tarih standartlarını kullanmaz. – Hennaz

1
function fn_DateCompare(DateA, DateB) {  // this function is good for dates > 01/01/1970 

    var a = new Date(DateA); 
    var b = new Date(DateB); 

    var msDateA = Date.UTC(a.getFullYear(), a.getMonth()+1, a.getDate()); 
    var msDateB = Date.UTC(b.getFullYear(), b.getMonth()+1, b.getDate()); 

    if (parseFloat(msDateA) < parseFloat(msDateB)) 
     return -1; // lt 
    else if (parseFloat(msDateA) == parseFloat(msDateB)) 
     return 0; // eq 
    else if (parseFloat(msDateA) > parseFloat(msDateB)) 
     return 1; // gt 
    else 
     return null; // error 
} 
+1

Bir "a/b.getMonth()" seçeneğine eklenmesi, Ocak ayının "1" haline gelmesine neden olur; bu, Şubat olarak Date.UTC yöntemine dönüştürülür. Mdn makalesine bakın: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/UTC. 'Month' parametresi için kabul edilebilir değerler bölümü. İşlevinizi kullanarak örneğin '2/1/2017' ve '1/31/2017' tarihlerini karşılaştırmaya çalışın. – papiro

0
function validateform() 
    { 
    if (trimAll(document.getElementById("<%=txtFromDate.ClientID %>").value) != "") { 
    if (!isDate(trimAll(document.getElementById("<%=txtFromDate.ClientID %>").value))) 
     msg = msg + "<li>Please enter valid From Date in mm/dd/yyyy format\n"; 
    else { 
     var toDate = new Date(); 
     var txtdate = document.getElementById("<%=txtFromDate.ClientID %>").value; 
     var d1 = new Date(txtdate) 
    if (Date.parse(txtdate) > Date.parse(toDate)) {     
     msg = msg + "<li>From date must be less than or equal to today's date\n"; 
    } 
    } 
} 

    if (trimAll(document.getElementById("<%=txtToDate.ClientID %>").value) != "") { 
      if (!isDate(trimAll(document.getElementById("<%=txtToDate.ClientID %>").value))) 
       msg = msg + "<li>Please enter valid To Date in mm/dd/yyyy format\n"; 
      else { 
       var toDate = new Date(); 
       var txtdate = document.getElementById("<%=txtToDate.ClientID %>").value; 
       var d1 = new Date(txtdate) 

       if (Date.parse(txtdate) > Date.parse(toDate)) { 
        msg = msg + "<li>To date must be less than or equal to today's date\n"; 
        } 
       } 
       } 
İlgili konular