2011-12-06 15 views
5

Este método está en line 1380 in the jQuery ui datepicker:¿Alguien puede explicar por qué esto está en jQuery UI Datepicker?

_daylightSavingAdjust: function(date) { 
    if (!date) { 
     return null; 
    } 
    date.setHours(date.getHours() > 12 ? date.getHours() + 2 : 0); 
    return date; 
} 

Se utiliza en muchos lugares en el código de selector de fechas. Por lo que yo puedo ver este código sólo tiene que añadir 2 horas para cualquier fecha que tiene las horas> 12 establece lo contrario, las horas a 0.

Lo he probado en mi consola:

date = new Date(); 
console.log("" + date); 
date.setHours(date.getHours() > 12 ? date.getHours() + 2 : 0); 
console.log("" + date); 

Y tengo :

Tue Dec 06 2011 18:36:06 GMT+0100 (CET) 
Tue Dec 06 2011 20:36:06 GMT+0100 (CET) 
+0

Supongo que hace lo que dice que hace, ajusta el tiempo de ahorro de luz para las instancias donde eso es un problema. Sin embargo, donde vivo, los ahorros de luz diurna son solo de una hora, no de dos. – adeneo

+0

Agregó un enlace a la línea de código real en su pregunta. Hay un comentario allí, pero no aclara mucho el tema. Parece que están tratando de activar la fecha para aumentar al día siguiente en algunos casos de esquina, pero realmente no estoy siguiendo la lógica. Eso sí, ese código también establece explícitamente horas a '0' cuando' <= 12'. –

+0

Después de mirar más de cerca, descubrí que el método se usa estrictamente con las fechas. En el método datepicker.parseDate, por ejemplo, después de pasar una nueva fecha a daylightSavingAdjust, se verifica para ver si se modificó. Si lo hizo, se genera un error. – disc0dancer

Respuesta

5

El comentario es un poco críptico de hecho:

/* Handle switch to/from daylight saving. 
    Hours may be non-zero on daylight saving cut-over: 
    > 12 when midnight changeover, but then cannot generate 
    midnight datetime, so jump to 1AM, otherwise reset. 
    @param date (Date) the date to check 
    @return (Date) the corrected date */ 

DatePicker crea objetos de fecha en termalmente a partir de las fechas elegidas sin especificar la hora, por lo que se usa la medianoche. En algunos lugares, el horario de verano comienza a la medianoche, lo que hace que el tiempo vuelva a las 11 p. M. Del día anterior.

De modo que esta función mira la hora del objeto Date para determinar si debe adelantar el tiempo en dos horas para obtener el día correcto.

Cuestiones relacionadas