date - que - marcadores google chrome
Formato de fecha de exportación de Google Bookmark? (6)
Inicialmente mirándolo, casi parece que si cortó los últimos 6 dígitos obtendría una fecha Unix razonable usando el convertidor en línea
1231721701 = lun, 12 de enero de 2009 00:55:01 GMT
1227217588 = Jue, 20 de noviembre de 2008 21:46:28 GMT
Los 6 dígitos adicionales podrían estar relacionados con el formato o algún tipo de atributos extendidos.
Hay un código de muestra para la conversión de marcas de tiempo de Unix si eso es de hecho lo que es.
He estado trabajando en analizar los marcadores de un archivo de exportación generado por los marcadores de Google. Este archivo contiene los siguientes atributos de fecha:
ADD_DATE = "1231721701079000"
ADD_DATE = "1227217588219000"
Estas no son marcas de tiempo de estilo Unix estándar. ¿Puede alguien señalarme en la dirección correcta aquí? Los analizaré usando c # si realmente quieres ayudarme.
mira aquí ejemplos de código: http://www.epochconverter.com/#code
// mi código groovy (java) finalmente salió como:
def convertDate (def epoch)
{
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 una fecha de época:
// long epoch = new java.text.SimpleDateFormat ("MM / dd / aaaa HH: mm: ss"). parse ("01/01/1970 01:00:00"). getTime () * 1000;
return dt;
} // fin de def
Así que la fecha del marcador de Firefox exportado como json me dio:
json.lastModified: 1366313580447014
convertir de la fecha de época: 18 / abr / 2013 21:33:00
de :
println "convertir desde la fecha de época:" + convertDate (json.lastModified)
Chrome usa una forma modificada del formato de hora de Windows (" época de Windows ") para sus marcas de tiempo, tanto en el archivo de Bookmarks
como en los archivos de 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 a la época Unix, debe convertirla a segundos y compensar la diferencia entre las dos fechas base (11644473600).
Aquí están las fórmulas de conversión para Unix, JavaScript (Unix en milisegundos), Windows y Chrome timestamps (puede reorganizar el + / × y - / ÷, pero perderá 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 deberá usar números de 64 bits o manejarlos como cadenas con el módulo BC-math de PHP.
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 encabezado "Exportaciones e importaciones":
"A lo largo de esta definición de formato de archivo [-], {date} es un número entero decimal que representa el número de segundos transcurridos desde la medianoche del 1 de enero de 1970".
Antes de eso, se mostraron ejemplos de {date}:
<DT> <H3 FOLDED ADD_DATE = "{date}"> {title} </ H3> ...
y
<DT> <A HREF="{url}" ADD_DATE="{date}" LAST_VISIT="{date}" LAST_MODIFIED="{date}"> {title} </A> ...
Algún día, escribiré una macro de VBA para convertir estas a fechas reconocibles, ¡ pero no hoy!
Si alguien más escribe un script de conversión primero, por favor compártelo. Gracias.
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
Haría algunos marcadores en momentos conocidos y lo probaría para confirmarlo.
En Javascript, el código 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);
}