Historias
Slashboxes
Comentarios
 
Este hilo ha sido archivado. No pueden publicarse nuevos comentarios.
Mostrar opciones Umbral:
Y recuerda: Los comentarios que siguen pertenecen a las personas que los han enviado. No somos responsables de los mismos.
  • asi a bote pronto

    (Puntos:4, Informativo)
    por sammael (16347) el Lunes, 24 Abril de 2006, 11:34h (#732596)
    ( http://barrapunto.com/ | Última bitácora: Lunes, 24 Febrero de 2014, 10:03h )
    creo que tu companiero tiene razon...

    lo que estas usando es la hora y fecha de la maquina, tanto como hora de inicio como hora de fin, es decir, el cambio de hora no tiene nada que ver con la API (de ahi, supongo, la dificultad de encontrar eso)

    para no liar las cosas, tu programa empieza, coje la hora del sistema y se queda a la espera, cuando la llamada termina, coje la nueva hora y la resta...

    ambos datos son internos al sistema y no tienes control sobre ellos, asi que si, si la llamada empieza antes de un cambio de hora y termina despues, tendras una duracion rara (con + o - 1 hora)

    ahora, en cuanto a la solucion, se me ocurren varias vias, la primera es que en tu programa simple tengas en cuenta las fechas de cambio de hora

    de la segunda no estoy seguro, ya que no se si tiene eso en cuenta y habria que hacer pruebas, pero podrias intentar usar el objeto Calendar (en vez del System.currentTimeMillis) y sacar las duraciones de ahi... es posible que la clase Calendar tenga en cuenta esas cosas, pero como te he dicho, no estoy seguro y habria que hacer pruebas

    si funcionara asi, la segunda opcion me parece mas correcta y elegante que la primera (y que te costara menos)
    --

    Dale fuego a un hombre y estara caliente un dia, prendele fuego y estara caliente el resto de su vida.
  • por kkman (19047) el Lunes, 24 Abril de 2006, 11:51h (#732603)
    ( Última bitácora: Martes, 07 Diciembre de 2010, 18:45h )
    1) la duracion de la llamada es un dato que se puede calcular a partir de fecha de inicio y la fecha de fin, por lo tanto no es apropiado de guardar en la base de datos.
    2) la funcion currenttime te da la hora actual sin mas. Si hay un cambio de hora, tendrias que contemplarlo cuando calculas la duracion.
    Sugerencia:
    Podrías meter una nueva tabla en base de datos donde pongas los cambios de hora que se dan en el sistema.

    La tabla seria tal que asi
    Hora NuevaHora
    x1 y1
    x2 y2


    Esto significa que en el dia/hora "x1" se cambio el reloj a "y1".

    La tabla esta, habria que mantenerla actualizada y te serviria no solo para los cambios de hora oficiales, sino tambien para cualquier otro cambio de hora que se haga.

    Luego gracias a esta tabla, puedes saber cuando hay un cambio de hora y calcular la duracion correctamente. Es mas complicado el calculo: con este nuevo sistema la duracion la calculas a partir de la fecha de inicio, la fecha de fin de la llamada y los datos de la tabla de cambios de hora
    suerte
  • da igual

    (Puntos:1)
    por Killer_Onion (18700) el Lunes, 24 Abril de 2006, 12:05h (#732612)
    ( Última bitácora: Jueves, 23 Agosto de 2007, 11:40h )
    Yo creo que funcionará sin problemas, los tipos Date suelen ser internamente un entero con la epoch time, sabiendo eso, cuando pides la hora con un formato hh:mm es capaz de saber si estás en horario de invierno o de verano. De todas formas si no te fias, saca directamente el epoch time y haces la resta, con eso no fallas ;-)
  • Usa GMT

    (Puntos:3, Informativo)
    por pstng (11053) el Lunes, 24 Abril de 2006, 13:18h (#732652)
    ( http://barrapunto.com/ | Última bitácora: Martes, 27 Junio de 2006, 21:11h )
    Pues eso, usa le hora Greenwich, que sirve para estas cosas, ya que no tiene cambio horario.
    Así, además, puedes seleccionar el país, etc. En este caso no es muy necesario, pero cuando se hacen cosas mínimamente complicadas con horas, sale a cuenta.
    Después, claro, hay que leer bien la hora solar (ojo con el cambio de fecha) y ya lo tendrás!
    • Re:Usa GMT de sammael (Puntos:2) Lunes, 24 Abril de 2006, 16:02h
    • 1 respuesta por debajo de tu umbral de lectura actual.
  • Re:Asunto

    (Puntos:1)
    por LagartoJuancho (20221) el Lunes, 24 Abril de 2006, 12:38h (#732631)
    ( Última bitácora: Lunes, 21 Diciembre de 2009, 20:28h )
    podría arrancar un thread que se dedicara a contar los segundos y actualizar la duración, pero me parece un poco rebuscado...es posible que hayan varias llamadas a la vez, si hay 30, 30 threads? un thread con un 'pool' de contadores a actualizar?
    [ Padre ]
    • Re:Asunto de pobrecito hablador (Puntos:2) Lunes, 24 Abril de 2006, 13:17h
  • Re:Documentación

    (Puntos:1)
    por LagartoJuancho (20221) el Lunes, 24 Abril de 2006, 13:15h (#732650)
    ( Última bitácora: Lunes, 21 Diciembre de 2009, 20:28h )
    Entonces funcionaria bien no? Yo construyo los Timestamp a partir del
    System.currentTimeMillis() y para calcular la duracion vuelvo a obtener esos valores con timestamp.getTime(), luego no habria problema.. no?
    [ Padre ]
  • 1 respuesta por debajo de tu umbral de lectura actual.