2009-10-16 15 views

risposta

139

See:

Codice:

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

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

Oops ..un piccolo boo-boo - il costruttore di date appare in questo modo: new Date (anno, mese, data [, ora, minuto, secondo, millisecondo]) quindi è necessario modificare l'ordine di dataLe parti all'interno del costruttore . –

+1

@ Salman: grazie e giusto. riparato –

+6

Un altro boo-boo. Il costruttore di date JavaScript è strano nel modo in cui gestisce i mesi. Considera 0 per gennaio, 1 per febbraio, ecc. La riga nel codice sopra dovrebbe apparire così: var data = new Date (dateParts [2], datePartts [1] - 1, datePartts [0]) ; –

9

Usiamo questo codice per verificare se la stringa è una data valida

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

il formato specificato non corrisponde al formato richiesto da https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Date/parse (e quindi il costruttore Date non sarà sufficiente) –

+1

Ha funzionato per me utilizzando gg MMM yyyy format so thanx :) – JumpingJezza

+0

Questo test non verifica affatto le date valide, ma verifica solo se il costruttore Date può creare una data valida dall'input. I due non sono la stessa cosa – RobG

52

Se si utilizza jQuery UI, è possibile 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 ambito, JavaScript e JQuery sono una combinazione comune. – djna

4

Usa Data oggetto:

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

Dare: 917902800000

+15

'new Date (Date.parse ('02 .02.1999 '))' – Duke

+0

+1 Per i commenti di Duke su 'new Date (Date.parse ('02 .02.1999'))' per Javascript – Jack

2

Questa funzione gestisce anche il 2001/02/29 data 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; 
} 
5

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

Se si utilizza moment.js, è possibile utilizzare la modalità + "stringa" "formato"

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

es:

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

Per la maggior parte dei casi, MomentJS è eccessivo, poiché l'uso di JavaScript puro richiede solo centinaia di byte, mentre MomentJS è 12,3kb gzip. Conveniente per gli sviluppatori ma rallenta il sito web. Non vale. – Raptor

3

I 'stato usato seguendo il codice in IE. (Compatibile IE8)

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

è possibile 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) 
+0

Si suppone che si utilizzi javascript non jquery in quanto non vi è alcun tag jquery – Sagar

+0

felice ... il significato è comprendere solo il senario – Bachas

+0

Bene. Non penso che il tuo esempio sia diverso da quello di Martin Staufcik. In realtà la sua risposta ha una logica aggiuntiva per gestire le date non valide. – Sagar