2011-01-13 24 views
8

Quando invio una data attraverso JSON da Java a JavaScript, invia qualcosa di simile:convertire Java DateString a JavaScript data

var ds = "11:07:47 13/01/2011"; 

Javascript non riesce ad analizzare questa stringa in data

var d = new Date(ds); 

Qualsiasi idee?

+0

non riesce a analizzare? ricevi qualche errore? – SilentGhost

+0

sì. genera un'eccezione usando il seguente termine: if (isNaN (d)) lancia SyntaxError ("invalid date"); –

+1

È stato chiesto a Tthis a gennaio 2011, il dup link è aprile 2011, come può essere un duplicato? –

risposta

12

avete bisogno di qualche JS che analizzare la stringa e restituiscono l'anno, mese, giorno, minuto, ora, secondo in stringhe:

var hour = ds.split(":")[0], 
    minute = ds.split(":")[1], 
    last_part = ds.split(":")[2], 
    second = second_part.split(" ")[0], 
    last_part2 = second_part.split(" ")[1], 
    day = last_part2.split("/")[0], 
    month = last_part2.split("/")[1], 
    year = last_part2.split("/")[2]; 

e quindi creare un'istanza della Data di costruzione:

var d = new Date (year, month, day, hour, minute, second); 
+1

La riga 3 dovrebbe essere 'second = ds.split (": ") [2],', elimina la quarta riga, la quinta riga dovrebbe essere 'last_part2 = ds.split (" ") [1],'. Potresti rinominare last_part2 in quanto non è più il 2 °. – Vache

+0

grazie per aver scritto il codice, ha funzionato come un fascino! –

4

Per sicurezza, si dovrebbe ottenere il tempo in millisecondi in Java e inviarlo tramite JSON a JavaScript. Ci si può utilizzare

var d = new Date(); 
d.setTime(valueInMilliseconds); 
3

Ci sono un certo numero di modi in cui è possibile chiamare il costruttore Date.
Dal riferimento http://www.w3schools.com/js/js_obj_date.asp:

new Date() // current date and time 
new Date(milliseconds) //milliseconds since 1970/01/01 
new Date(dateString) 
new Date(year, month, day, hours, minutes, seconds, milliseconds) 
2
function stringToDate(_date,_format,_delimiter) 
{ 
     var formatLowerCase=_format.toLowerCase(); 
     var formatItems=formatLowerCase.split(_delimiter); 
     var dateItems=_date.split(_delimiter); 
     var monthIndex=formatItems.indexOf("mm"); 
     var dayIndex=formatItems.indexOf("dd"); 
     var yearIndex=formatItems.indexOf("yyyy"); 
     var month=parseInt(dateItems[monthIndex]); 
     month-=1; 
     var formatedDate = new Date(dateItems[yearIndex],month,dateItems[dayIndex]); 
     return formatedDate; 
} 

stringToDate("17/9/2014","dd/MM/yyyy","/"); 
stringToDate("9/17/2014","mm/dd/yyyy","/") 
stringToDate("9-17-2014","mm-dd-yyyy","-") 
Problemi correlati