2011-01-13 30 views
8

Cuando envío un día a través de JSON de Java a JavaScript, envía algo como esto:convertir DateString de Java a JavaScript fecha

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

Javascript para analizar esta cadena en la fecha

var d = new Date(ds); 

Cualquier ideas?

+0

no puede analizar? ¿tuviste algun error? – SilentGhost

+0

sí. arroja una excepción usando el siguiente término: if (isNaN (d)) throw SyntaxError ("fecha inválida"); –

+1

Tthis se le preguntó en enero de 2011, el enlace dup es abril de 2011, ¿cómo puede ser esto un duplicado? –

Respuesta

12

necesitas algo de JS que analizar la cadena y devuelven el año, mes, día, hora, horas, segundos en cadenas:

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]; 

y luego una instancia de la Fecha constructor:

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

La línea 3 debe ser 'second = ds.split (": ") [2],', eliminar la 4ª línea, la 5ª línea debe ser 'last_part2 = ds.split (" ") [1],'. Podría cambiar el nombre de last_part2 ya que ya no es el 2do. – Vache

+0

gracias por escribir el código, ¡funcionó como un amuleto! –

4

Para estar seguro, debería obtener el tiempo en milisegundos en Java y enviarlo a través de JSON a JavaScript. Allí se puede utilizar

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

Hay un número de maneras que usted puede llamar al constructor Date.
De la referencia al 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","-") 
Cuestiones relacionadas