2011-04-07 8 views
9

tengo el siguiente código JavaScript, pero desde hace algún tiempo la razón no está incluida minutos:JavaScript new Date()

var austDay = $("#<%= hiddenFieldTime.ClientID %>").val().split(" "); 

var year = austDay[0]; 

var months = austDay[1]; 

var days = austDay[2]; 

var time = austDay[3]; 

var timeUntil = new Date(parseInt(year), parseInt(months), 
         parseInt(days), parseInt(time)); 

Cuando depuración mediante Firebug éstos son mi valor:

$("#ctl00_hiddenFieldTime").val() = "2011, 5, 6, 14:20:00" 

year = "2011," 

months = "5," 

days = "6," 

time = "14:20:00" 

timeUntil = Date {Mon Jun 06 2011 14:00:00 GMT-0400 (Eastern Daylight Time)} 

Como puede ver, timeUntil se establece en lugar de 14:00:0014:20:00

Respuesta

17

parseInt(time) es el problema

Éstos son el formato de inicialización pocas fechas

var d = new Date(); 
var d = new Date(milliseconds); 
var d = new Date(dateString); 
var d = new Date(year, month, day, hours, minutes, seconds, milliseconds); 
2

Su última conversión va a dejar todo tras los dos puntos:

parseInt("14:20:00"); // 14 

Toda la conversión es bastante hinchado, sugiero tratando de formato a la cadena inicialmente en un formato, puede pasar como al constructor de JS Date, lo que hará la vida más fácil.

14

De acuerdo con la Mozilla documentation for Date, los constructores siguientes son compatibles:

new Date() 
new Date(milliseconds) 
new Date(dateString) 
new Date(year, month, day [, hour, minute, second, millisecond ]) 

Esto significa que en su constructor, cuando se pasa parseInt(time), ese parámetro sólo se utiliza para el parámetro hour. Debe pasar un parámetro por separado por minutos, y otro más si quiere segundos.


Además, siempre se debe pasar un parámetro base a parseInt, así:

parseInt(hours, 10) 

lo contrario cuando se va a analizar un valor con una de las principales 0 como parseInt('08'), el valor se interpreta como un número octal.

+1

Dónde DateString debe estar en un formato reconocido por [el método de análisis sintáctico] (https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date/parse) – mb21

Cuestiones relacionadas