[eside-ghost] Fecha Lifeblog

Iker Perez de Albeniz - Txupete - txupete en gmail.com
Lun Dic 20 09:43:11 CET 2010


Hola,

En su día estube haciendo ingeniería inversa del protocolo de Google
Market.. y tenia un problema parecido con las fechas.. por ahí leí que
estaban en formato uint64 en vez de uint32 para evitar
http://en.wikipedia.org/wiki/Year_2038_problem

por ahi vi algunos algoritmos que cogían los primeros 32 bits para
fecha y una combinación de estos con los segundos 32 bits para
tiempo... no recuerdo mas..

mira esto a ver si te sirve...

http://www.magick-source.net/projects/magick-source/wiki/NTP64bits2UnixTime


El día 19 de diciembre de 2010 00:18, Álvaro Morán
<nirvana644 en gmail.com> escribió:
> Hola,
> Quería convertir fechas de la aplicación Nokia Lifeblog desde el formato en
> que estas se guardan en la base de datos de sqlite
>  (NokiaLifeblogDataBase.db3) a un formato más fácil de entender.
> Las fechas se guardan con un formato como este 39478.764525463 (que equivale
> al 31/1/2008 18:20:55) donde la parte entera guarda el día, mes y año y la
> parte decimal la hora, minutos y segundos.
> He averiguado que para convertir la parte entera basta con hacer
> public static int INICIO = 39447;
> public static int[] convertirFloatFechaAEnteros(double fecha) throws
> Exception
> {
> // Este número 39467 se corresponde al día 18 de enero de 2008
> // por tanto  0 de enero de 2008 <--> 39447, que es un valor ficticio de
> referencia (no existe el día 0)
> int numAAnalizar = (int) fecha;
> if(numAAnalizar<=INICIO)
> throw new Exception("Sólo se permiten fechas superiores o iguales al 1 de
> enero de 2008, que se corresponden con la parte entera "+(INICIO+1)+".");
> int año=2008, mes = 1;// dia = 0;
> int numDias = numAAnalizar - INICIO;
> if(numDias > 366)
> {
> numDias -= 366;
> año ++;
> }
> while(numDias >  diasMeses[mes -1] )
> {
> if(mes != 2) {
> numDias -= diasMeses[mes -1];
> mes ++;
> }
> else
> {
> if(esBisiesto(año)) {
> if(numDias > 29)
> {
> numDias -= 29;
> mes ++;
> }
> }
> else {
> if(numDias > 28)
> {
> numDias -= 28;
> mes ++;
> }
> }
> }
> }
> //System.out.println("Número analizado: "+numAAnalizar+" Fecha =
> "+numDias+"-"+mes+"-"+año);
> return new int[] {numDias, mes, año};
> }
>
> Sin embargo por mucho que he googleado no tengo la más remota idea de cómo
> convertir la parte decimal a su correspondiente hora, minutos y segundos. ¿A
> alguien se le ocurre algo?.
> Adjunto un fichero en java que funciona (la parte que ya comenté).
> Atentamente Álvaro
> _______________________________________________
> eside-ghost mailing list
> eside-ghost en listas.deusto.es
> https://listas.deusto.es/mailman/listinfo/eside-ghost
>



-- 
Iker Perez de Albeniz
web: http://www.ikeralbeniz.net/


Más información sobre la lista de distribución eside-ghost