2012-07-09 10 views
5

Necesito crear una selección de tiempo "de ... a" y creé 2 componentes de TimePicker para eso. Debido a que la base de datos detrás de ella ya existe desde hace años y utiliza un formato de 24 horas, en mi código, Soy la creaciónTimePicker no permite "24:00"?

tpOpenFrom.setIs24HourView(true); 
tpOpenTo.setIs24HourView(true); 

Mi problema ahora es que lo que parece, "24:00" no se puede seleccionar como un valor "a:", como después de "23" (: 00), el componente cambia "de nuevo" a "00" (: 00), por lo que es imposible averiguar si el usuario olvidó hacer una selección real, como si se ha ingresado "09:00" como "desde" la hora y "00:00" como "a" hora. O si se ha realizado una selección de "00:00" a "00:00": ¿el usuario olvidó ingresar algo o tenía la intención de definir "abierto todo el día"?

En el modo de 24 horas, el TimePicker realmente debería permitir la entrada a las 24:00. El sistema de reloj de 24 horas en ISO 8601 define la medianoche como un caso especial, que puede denominarse tanto "00:00" como "24:00", por lo que TimePicker debe permitir que las horas se establezcan en 24 y bloquear automáticamente el minutos a 00.

¿Alguien tiene una idea de cómo lograr eso utilizando el TimePicker?

+0

corriendo en un problema análogo yo mismo; pero parece que cada TimePicker en el planeta ignora la desambiguación ISO8601 5.3.2 de 'medianoche'. Como dices, 00:00 y 24:00 son valores válidos en una representación de datos de solo tiempo, por ISO. – Tim

Respuesta

2

Tuve los mismos problemas con un cronometrador de arranque pero no es difícil de implementar. Estoy usando el timepicker de Joris de Wit (http://jdewit.github.io/bootstrap-timepicker/).

busque "24" y reemplace todas las ocurrencias con "25", luego busque "23" en bootstrap-timepicker.js y reemplácelas con "24".

si quiere permitir tiempos como 24:01, .., 24:59, listo. Si solo quiere aceptar las 24:00 pero no las 24 con minutos, vaya a la línea 133 donde está la función getTime.

Coloque el código siguiente en el frente de la declaración existente (pero no lo borre):

if (this.hour == 24 && this.minute != 0) { 
    this.setTime('00:' + this.minute); 
    return '00:' + this.minute; 
} 

Esto convertirá cualquier 24: XX tiempo a 00: XX.

Cuestiones relacionadas