2009-02-12 15 views
10

He estado trabajando en analizar marcadores de un archivo de exportación generado por los marcadores de Google. Este archivo contiene los siguientes atributos de fecha:Google Bookmark Exportar formato de fecha?

ADD_DATE = "1231721701079000"

ADD_DATE = "1227217588219000"

Estas no son las marcas de tiempo de estilo estándar de Unix. ¿Puede alguien señalarme en la dirección correcta aquí? Los analizaré usando C# si realmente quieres ayudarme.

Respuesta

5

1231721701079000 se ve sospechosamente como el tiempo desde el 1 de enero de 1970 en microsegundos.

perl -wle 'print scalar gmtime(1231721701079000/1_000_000)' 
Mon Jan 12 00:55:01 2009 

Me gustaría hacer algunos marcadores en momentos conocidos y probar para confirmar.

+0

@Lothar ¿Es eso una afirmación tautológica? – Schwern

+0

No, es hora del 1 de enero de 1970 en _micro_ segundos – mgkrebbs

+0

@mgkrebbs ¡Tienes razón! Fijo. ¡Saluda a Dobie! – Schwern

1

Inicialmente mirarlo, que casi parece si cortaron los últimos 6 dígitos que obtendría un razonable Unix Date utilizando el online converter

1231721701 = Lun 12 Ene 2009 00:55:01 GMT

1227217588 = Jue 20 Nov 2008 21:46:28 GMT

El extra de 6 dígitos podrían ser formateando relacionado o algún tipo de atributos extendidos.

Hay un código de muestra para el conversion of Unix Timestamps si de hecho es lo que es.

+0

Schwern era correcta, pero le dio un voto para el enlace que es el código que estaba usando para la conversión de las marcas de tiempo UNIX. –

+0

sí, estoy de acuerdo. No di cuenta de los milisegundos –

1

Mira aquí para ejemplos de código: http://www.epochconverter.com/#code

// mi maravilloso (Java) código finalmente salió como:

def convertDate (def época o)

{

long dv = epoch/1000; // divide by 1,000 to avoid milliseconds 

String dt = new java.text.SimpleDateFormat("dd/MMM/yyyy HH:mm:ss").format(new java.util.Date (dv)); 

// para obtener la fecha de época:

// long epoch = new java.text.Simp leDateFormat ("MM/dd/aaaa HH: mm: ss"). parse ("01/01/1970 01:00:00"). getTime() * 1000;

return dt; 

} // fin de def

Así Firefox fecha marcador exporta como JSON me dio:

json.lastModified: 1366313580447014

convertido desde la fecha de la época: 18/Abr/2013 21:33:00

de:

println "convertir de EPO fecha ch: "+ convertDate (json.lastModified)

13

Chrome utiliza una forma modificada del formato de hora de Windows (‘Windows epoch’) por sus marcas de tiempo, tanto en el archivo Bookmarks y los archivos de la historia. El formato de hora de Windows es el número de 100ns-es desde el 1 de enero de 1601. El formato de Chrome es el número de microsegundos desde la misma fecha y, por lo tanto, 1/10 del tamaño máximo.

Para convertir una marca de tiempo Chrome desde y hacia la época Unix, debe convertir a segundos y compensar la diferencia entre los dos horarios base (11644473600).

He aquí las fórmulas de conversión para Unix, JavaScript (Unix en milisegundos), Windows y marcas de tiempo cromo (puede reorganizar el +/x y -/÷, pero si no se pierden un poco de precisión):

u : Unix  timestamp eg: 1378615325 
j : JavaScript timestamp eg: 1378615325177 
c : Chrome  timestamp eg: 13902597987770000 
w : Windows timestamp eg: 139025979877700000 

u = (j/1000) 
u = (c - 116444736000000) /10000000 
u = (w - 1164447360000000)/100000000 

j = (u * 1000) 
j = (c - 116444736000000) /10000 
j = (w - 1164447360000000)/100000 

c = (u * 10000000)   + 116444736000000 
c = (j * 10000)    + 116444736000000 
c = (w/10) 

w = (u * 100000000)   + 1164447360000000 
w = (j * 100000)   + 1164447360000000 
w = (c * 10) 

Tenga en cuenta que estos son números bastante grandes, por lo que tendrá que usar números de 64 bits o manejarlos como cadenas con el módulo BC-math de PHP.

+0

Pero la respuesta es sobre 'bookmarks_mm.dd.yyyy.html' exportado. Http://fileformats.archiveteam.org/wiki/Chrome_bookmarks – Alex78191

2

Eureka! Recuerdo haber leído el significado de ADD_DATE en algún sitio web, pero hasta hoy no pude encontrarlo nuevamente.

http://MSDN.Microsoft.com/en-us/library/aa753582(v=vs.85).aspx

ofrece esta explicación como una “Nota” justo antes del epígrafe “Las exportaciones y las importaciones”:

“A lo largo de este archivo [-] formato de definición, {fecha} es un número entero decimal que representa el número de segundos transcurridos desde la medianoche del 1 de enero de 1970. "

Bef El mineral, se muestran ejemplos de {fecha}:

<DT> < H3 FOLDED ADD_DATE = "{fecha}" > {title} </H3 > ...

y

<DT> < A HREF = "{url}" ADD_DATE = "{date}" LAST_VISIT = "{date}" LAST_MODIFIED = "{date}" > {title} </A > ...

Algún día, voy a escribir una macro de VBA para convertir estas fechas a reconocibles, pero no hoy!

Si alguien más escribe un script de conversión primero, por favor compártalo. Gracias.

4

En el código Javascript se verá así

function chromeDtToDate(st_dt) { 
    var microseconds = parseInt(st_dt, 10); 
    var millis = microseconds/1000; 
    var past = new Date(1601, 0, 1).getTime(); 
    return new Date(past + millis); 
} 
+0

Es la respuesta sobre' bookmarks_mm.dd.yyyy.html', no sobre 'Bookmarks [. json] '. – Alex78191