2011-02-05 11 views
12

He estado buscando diferentes métodos para almacenar tiempo en Java y no puedo encontrar la implementación correcta para mis necesidades.Almacenamiento de información simple de horas/minutos en Java - pregunta sobre mejores prácticas

Quiero almacenar información sobre nuestro programa de cursos, esta información consiste principalmente en una hora de inicio y finalización (inicio: HH: MM final: HH: MM). Ahora voy a utilizar estos datos en todo el código para crear las diferentes vistas y lógica detrás de la aplicación.

Por ahora he implementado utilizando la clase GregorianCalendar que funciona bien, pero en cada entrada de un curso termino usando una fecha por defecto para todos + tiempo, a continuación, proceder en ignorar por completo la fecha en toda la aplicación .

Estoy tratando de desarrollar mejores hábitos de codificación y me preguntaba cómo podría resolver este problema. En nuestros cursos, recibimos un martilleo en la cabeza a diario con buenas prácticas, desarrollo de OO y el uso de herramientas integradas y de biblioteca cuando podemos, pero ¿se aplica esto en tal situación?

debo:

  1. Implementar mi propia clase almacenar horas y minutos con todas las comprobaciones de integridad requeridas etc ...
  2. palillo de lo que tengo, no es bonita, pero mejor que reinventar la rueda.
  3. Existe una solución increíblemente limpia y simple que he pasado por alto y que todos conocen.

Ahora, obviamente, no espero una respuesta en blanco y negro aquí, sino más bien una guía sobre cómo abordar estos problemas.

EDIT:

yo soy el creador original, que ya registrado una cuenta, pero en realidad no puede enviar nada ya que no estoy vinculado al poste.

Después de una cuidadosa consideración creo que construir mi propia solución para almacenar esta información es el enfoque más fácil e intuitivo, las herramientas que existen son brillantes pero mucho más complejas que la información que realmente necesito y probablemente conducirán a un código más hinchado para extraer los artículos que requiero

+2

es posible que desee publicar un código sobre cómo se ve su diseño actual. Por lo que puedo deducir, no veo ninguna razón por la que deba implementar su implementación ganada, sin embargo ... – posdef

+0

Puede haber una buena razón, por ejemplo, cuando no hay clases que permitan horas y minutos, pero no segundos. Escribir una clase propia es muy fácil y con una buena interfaz para las clases existentes, * puede * ser la mejor solución. – maaartinus

Respuesta

0

El mejor método puede ser utilizar el tiempo Joda ya que tiene objetos para describir la hora del día y los días sin hora y Fecha y hora. En general, Joda time es una biblioteca más agradable, especialmente si quieres algo un poco diferente a las clases integradas.

7

Probablemente deberías echar un vistazo a Joda Time. Es mejor que usar solo java.util.Date o escribir su propia implementación de fecha y hora. Otra ventaja de Joda Time es que el objeto creado es inmutable y tiene variedades de API útiles para manipular la fecha y hora o realizar comprobaciones de fecha y hora.

+4

¡De vez en cuando uso Joda Time! – Andy

2

Existe la clase java.sql.Time, que podría servir para este fin, si no estuviera completamente rota. NO usaría Calender, ya que esta es una clase bastante hinchada para cómputo y también contiene una parte de fecha. Me gustaría ver joda time, que lo más probable tiene lo que necesita.

De lo contrario, iría a mi propia clase. Puede necesitarlo en caso de que no desee almacenar los segundos, etc.

+0

Mi primer intento fue con java.sql.Time, pero rápidamente me di por vencido. Voy a echar un vistazo a Joda – shalombi

3

Quizás considere usar solo un int para representar la hora.Este sería un valor entre 0 y 1439 (la cantidad de minutos en el día). Entonces, el mediodía estaría representado como 720 (12 * 60); 9:30 a.m. sería 570 (9 * 60 + 30), 9:30 p.m. sería 1290 (21 * 60 + 30), etc.

Esto podría ser fácilmente envuelto en una clase para extraer/configurar las horas y minutos (considere la posibilidad de hacer esta clase inmutable).

JodaTime es una biblioteca excelente, pero posiblemente exagerada para lo que estás tratando de hacer aquí.

+0

¿Cómo convertirías de un número a otro? ¿Cuál sería la fórmula? –

Cuestiones relacionadas