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.
  • por pobrecito hablador el Sábado, 01 Septiembre de 2001, 16:11h (#51489)
    En teoría, si recuperamos el número de segundos que han pasado desde el 1 de Enero de 1970 en una variable de 32 bits, tendríamos hasta el 2037, creo recordar.

          Ahora bién, ¿que pasa si usamos un int?, el int, es un entero con signo de 32 bits, y muchos programadores, por comodidad, cuando necesitan un entero, ponen un int, y no se complican la vida. Tengo en mente muchas aplicaciones cuyo mantenimiento ya no llevo yo, que se que van a fallar esa fecha.

          Normalmente, en la mayoría de las aplicaciones que usan la orden time(), no debería plantear ningún problema, ni aún usando un int, puesto que despues, usan ese valor para obtener una cadena ASCIIZ con la fecha.

          Pero en otras ocasiones, es ese número el que se usa, por ejemplo para hacer comparaciones de fecha. Entonces podría suceder, que una fecha posterior, al quedar negativa, quedaría como anterior a una fecha incluso de 1970.

          Otro fallo que podríamos tener, es cuando queremos tener la fecha de ayer, o de hace cinco días, o la de mañana. El truco en sumar o restar al valor devuelto por la función time() (N * 36400). 36400 es el número de segundos que tiene un dia, si queremos saber la fecha de ayer, N valdrá -1, pero si usamos un int (entero con signo), al ser negativo su valor, (el bit más significativo está a 1), en lugar de tener la fecha de ayer, tendríamos la fecha de mañana.

                    Lokutus, asimilando la red.

    Puntos de inicio:    2  puntos
    Modificador extra 'Informativo'   0  

    Total marcador:   2