Przeanalizuj ciąg DateTime w JavaScript


Odpowiedzi:


140

Widzieć:

Kod:

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

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

mmm, ale jak sprawdzić, czy strDate ma nieprawidłową wartość, np. „30.30.2000”?
Dr. No

2
@ user674887, możesz porównać wartości po przeanalizowaniu. np. dateParts [1] -1 == date.getMonth ()
Jonathan Fingland

Jeśli masz obie daty TIME w następujący sposób: "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]); Pierwsza data wyodrębnienia przed T, a później podział roku, miesiąca i dnia.
RolandoCC

nie mogę uwierzyć, że musisz użyć podziału, aby uzyskać oczekiwany format daty w javascript
Claudiu Creanga

Czy ktoś jeszcze uważa za dziwne, że artykuł referencyjny Mozilli dotyczący samego obiektu Date "Note: parsing of date strings with the Date constructor (and Date.parse, they are equivalent) is strongly discouraged due to browser differences and inconsistencies."?
NanoWizard

51

Jeśli korzystasz z interfejsu użytkownika jQuery, możesz sformatować dowolną datę za pomocą:

<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 Nie uważam, żebym był całkowicie poza zakresem, JavaScript i JQuery to powszechna kombinacja.
djna

Odpowiedź nie powinna opierać się na bibliotece, która nie jest oznaczona ani wymieniona w OP. Używanie jQuery jako biblioteki dat jest ogromną przesadą, gdy 3-liniowa funkcja może wykonać to samo zadanie.
RobG,

9

Używamy tego kodu, aby sprawdzić, czy ciąg jest prawidłową datą

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

podany format nie jest zgodny z formatem wymaganym przez developer.mozilla.org/en/Core_JavaScript_1.5_Reference/… (a więc ten konstruktor Date nie wystarczy)
Jonathan Fingland

To w ogóle nie sprawdza poprawności dat, tylko sprawdza, czy konstruktor Date może ustawić prawidłową datę na podstawie danych wejściowych. To nie to samo.
RobG

6

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

Jeśli używasz momentu.js, możesz użyć trybu „string” + „format”

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

dawny:

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

2
W większości przypadków MomentJS to przesada, ponieważ używanie czystego JavaScript wymaga tylko setek bajtów, podczas gdy MomentJS jest 12,4kb spakowane gzipem. Wygodny dla programistów, ale spowalnia witrynę. Nie warto.
Raptor

3

Byłem używany zgodnie z kodem w IE. (Kompatybilny z IE8)

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


2

Użyj obiektu Date:

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

Podaj: 917902800000


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

+1 Dla komentarzy Duke'a dotyczących new Date(Date.parse('02.02.1999'))Javascript
Jack

Zwraca NaN w co najmniej dwóch aktualnych przeglądarkach. Zobacz Dlaczego Date.parse daje nieprawidłowe wyniki?
RobG,

@ Duke - new Date(Date.parse('02.02.1999'))da identyczne wyniki new Date('02.02.1999'), w tym Invalid Date w niektórych przeglądarkach. Korzystanie z wbudowanego analizatora składni jest prawdopodobnie najgorszym sposobem analizowania znacznika czasu.
RobG,

2

Ta funkcja obsługuje również nieprawidłową datę 29.2.2001.

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

możesz sformatować datę po prostu tworząc ten typ kodu w javascript.

 // 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)

Powinieneś używać javascript, a nie jquery, ponieważ nie ma tagu jquery
Sagar

szczęśliwy ... oznacza to po prostu zrozumieć senario
Bachas

Dobrze. Nie sądzę, żeby twój przykład był inny niż ten podany przez Martina Staufcika. W rzeczywistości jego odpowiedź ma dodatkową logikę do obsługi nieprawidłowych dat.
Sagar

Martin Staufcik radzi sobie z takimi stanami, które zwykle nie występują. czy możesz dać mi jakikolwiek kalendarz, który może spowodować unieważnienie. dlaczego powinniśmy pisać tak długi kod, skoro możemy sobie z nim poradzić w krótkim czasie Byłoby znacznie lepiej, gdyby Martin Staufcik również dał do obsługi datę z czasem do obsługi.
Bachas
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.