Analizza la stringa DateTime in JavaScript


Risposte:


140

Vedere:

Codice:

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

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

mmm, ma come controllare che strDate abbia un valore non valido come "30.30.2000"?
Dr. No

2
@ user674887, puoi confrontare i valori dopo l'analisi. es. dateParts [1] -1 == date.getMonth ()
Jonathan Fingland,

Se hai data entrambi TIME in questo modo: "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]); Data del primo estratto prima di T e successivamente anno, mese e giorno di divisione.
RolandoCC

non posso credere che tu debba usare una divisione per ottenere il formato della data previsto in javascript
Claudiu Creanga

Qualcun altro trova strano che l'articolo di riferimento di Mozilla sull'oggetto Date stesso dica "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

Se stai usando jQuery UI, puoi formattare qualsiasi data con:

<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 Non vedo come totalmente fuori portata, JavaScript e JQuery sono una combinazione comune.
djna

Una risposta non dovrebbe fare affidamento su una libreria che non è etichettata o menzionata nell'OP. L'utilizzo di jQuery come libreria di date è eccessivo quando una funzione a 3 righe può fare lo stesso lavoro.
RobG


6

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

Se utilizzi moment.js, puoi utilizzare la modalità "stringa" + "formato"

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

ex:

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

2
Nella maggior parte dei casi, MomentJS è eccessivo, poiché l'utilizzo di JavaScript puro richiede solo centinaia di byte, mentre MomentJS è gzip da 12,4 kb. Conveniente per gli sviluppatori ma rallenta il sito web. Non vale.
Raptor

3

Sono stato utilizzato seguendo il codice in IE. (Compatibile con IE8)

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


2

Usa oggetto Data:

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

Dai: 917902800000


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

+1 Per i commenti di Duke su new Date(Date.parse('02.02.1999'))Javascript
Jack

Restituisce NaN in almeno due browser correnti. Vedere Perché Date.parse fornisce risultati errati?
RobG

@ Duke— new Date(Date.parse('02.02.1999'))produrrà risultati identici a new Date('02.02.1999'), inclusa la data non valida in alcuni browser. L'utilizzo del parser integrato è probabilmente il modo peggiore per analizzare un timestamp.
RobG

2

Questa funzione gestisce anche la data 29.2.2001 non valida.

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

puoi formattare la data solo facendo questo tipo di codice.In 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)

Dovresti utilizzare javascript non jquery in quanto non esiste un tag jquery
Sagar

felice ... il significato è solo capire il senario
Bachas

Bene. Non credo che il tuo esempio sia diverso da quello fornito da Martin Staufcik. In effetti la sua risposta ha una logica aggiuntiva per gestire le date non valide.
Sagar

Martin Staufcik gestisce quelle condizioni che non si verificano generalmente. puoi darmi qualsiasi calendario che possa dare invalidates. perché dovremmo scrivere un codice così lungo quando possiamo gestirlo in modo breve. Sarei molto meglio se Martin Staufcik desse anche di gestire la data con il tempo di gestire.
Bachas
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.