JavaScript'te DateTime dizesini ayrıştırın


Yanıtlar:


139

Görmek:

Kod:

var strDate = "03.09.1979";
var dateParts = strDate.split(".");

var date = new Date(dateParts[2], (dateParts[1] - 1), dateParts[0]);

mmm, ancak strDate'in "30.30.2000" gibi geçersiz bir değere sahip olup olmadığı nasıl kontrol edilir?
Dr. No

2
@ user674887, ayrıştırdıktan sonra değerleri karşılaştırabilirsiniz. ör. dateParts [1] -1 == date.getMonth ()
Jonathan Fingland

Her iki TIME tarihiniz şu şekildeyse: "2014-05-20T16: 43: 56.71-06: 00" var partesFecha = solicitud.CreatedDate.split ("T") [0] .split ("-"); var createdDate = new Date (partesFecha [0], (partesFecha [1] - 1), partesFecha [2]); İlk ekstraksiyon tarihi T'den önce ve daha sonra bölünmüş yıl, ay ve gün.
RolandoCC

javascript'te beklenen tarih biçimini elde etmek için bölme kullanmanız gerektiğine inanamıyorum
Claudiu Creanga

Date nesnesindeki Mozilla referans makalesinin kendisinin söylemesini garip bulan var "Note: parsing of date strings with the Date constructor (and Date.parse, they are equivalent) is strongly discouraged due to browser differences and inconsistencies."mı?
NanoWizard

51

JQuery UI kullanıyorsanız, herhangi bir tarihi şu şekilde biçimlendirebilirsiniz:

<html>
    <body>
        Your date formated: <span id="date1"></span><br/>
    </body>
</html>

 

var myDate = '30.11.2011';
var parsedDate = $.datepicker.parseDate('dd.mm.yy', myDate);

$('#date1').text($.datepicker.formatDate('M d, yy', parsedDate));

http://jsfiddle.net/mescalito2345/ND2Qg/14/


21
+1 Tamamen kapsam dışı görmüyorum, JavaScript ve JQuery ortak bir kombinasyon.
djna

Cevap, OP'de etiketlenmemiş veya bahsedilmeyen bir kitaplığa dayanmamalıdır. JQuery'yi bir tarih kitaplığı olarak kullanmak , 3 satırlık bir işlev aynı işi yapabildiğinde çok fazla bir şeydir.
RobG

9

Bu kodu dizenin geçerli bir tarih olup olmadığını kontrol etmek için kullanıyoruz

var dt = new Date(txtDate.value)
if (isNaN(dt))

verilen format, developer.mozilla.org/en/Core_JavaScript_1.5_Reference/… tarafından istenen formatla eşleşmiyor (ve bu nedenle bu Tarih oluşturucu yeterli olmayacak)
Jonathan Fingland

Bu, geçerli tarihleri ​​hiç test etmez, yalnızca Date yapıcısının girdiden geçerli bir tarih yapıp yapamayacağını test eder. İkisi aynı şey değil.
RobG

6

referanslar: http://momentjs.com/docs/#/parsing/string/

Moment.js kullanıyorsanız, "string" + "format" modunu kullanabilirsiniz.

moment(String, String);
moment(String, String, String);
moment(String, String, Boolean);
moment(String, String, String, Boolean);

ör:

moment("12-25-1995", "MM-DD-YYYY");

2
Çoğu durumda, MomentJS, saf JavaScript kullanmak sadece yüzlerce bayt gerektirirken, MomentJS 12.4kb gzip ile sıkıştırılmış olduğundan, aşırı derecede önemlidir. Geliştiriciler için uygundur ancak web sitesini yavaşlatır. Değmez.
Raptor

3

IE'de aşağıdaki kodu kullandım. (IE8 uyumlu)

var dString = "2013.2.4";
var myDate = new Date( dString.replace(/(\d+)\.(\d+)\.(\d+)/,"$2/$3/$1") );
alert( "my date:"+ myDate );


2

Date nesnesini kullanın:

var time = Date.parse('02.02.1999');
document.writeln(time);

Vermek: 917902800000


16
new Date(Date.parse('02.02.1999'))
Duke

+1 Duke'un new Date(Date.parse('02.02.1999'))Javascript için yorumları için
Jack

En az iki geçerli tarayıcıda NaN döndürür. Date.parse neden yanlış sonuçlar veriyor? Konusuna
RobG

@ Duke— bazı tarayıcılarda Geçersiz Tarih dahil olmak üzere new Date(Date.parse('02.02.1999'))aynı sonuçları üretecektir . Yerleşik ayrıştırıcıyı kullanmak muhtemelen bir zaman damgasını çözümlemenin en kötü yoludur. new Date('02.02.1999')
RobG

2

Bu işlev aynı zamanda geçersiz 29.2.2001 tarihini de işler.

function parseDate(str) {
    var dateParts = str.split(".");
    if (dateParts.length != 3)
        return null;
    var year = dateParts[2];
    var month = dateParts[1];
    var day = dateParts[0];

    if (isNaN(day) || isNaN(month) || isNaN(year))
        return null;

    var result = new Date(year, (month - 1), day);
    if (result == null)
        return null;
    if (result.getDate() != day)
        return null;
    if (result.getMonth() != (month - 1))
        return null;
    if (result.getFullYear() != year)
        return null;

    return result;
}

0

Sadece bu tür bir kod oluşturarak tarihi biçimlendirebilirsiniz. JavaScript'te.

 // for eg.
              var inputdate=document.getElementById("getdate").value);
                 var datecomp= inputdate.split('.');

                Var Date= new Date(datecomp[2], datecomp[1]-1, datecomp[0]); 
                 //new date( Year,Month,Date)

Jquery etiketi olmadığı için jquery yerine javascript kullanmanız gerekiyor
Sagar

mutlu ... anlam sadece senaryoyu anlamaktır
Bachas

İyi. Örneğinizin Martin Staufcik tarafından verilenden farklı olduğunu sanmıyorum. Aslında cevabının geçersiz tarihleri ​​ele almak için ek bir mantığı var.
Sagar

Martin Staufcik, genel olarak ortaya çıkmayan bu durumlarla ilgilenir. Geçersiz kılabilecek herhangi bir takvim verebilir misiniz? neden kısa yoldan halledebildiğimizde bu kadar uzun kod yazmalıyız Martin Staufcik'in de tarihi işlemek için zaman vermesi çok daha iyi olur.
Bachas
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.