Saltar al contenido

Cómo analizar el valor “date_added” de los marcadores de Chrome en una fecha

Si encuentras alguna incompatibilidad en tu código o trabajo, recuerda probar siempre en un entorno de testing antes añadir el código al trabajo final.

Solución:

El valor de tiempo de los marcadores de Chrome es microsegundos a partir de una época de 1601-01-01T00:00:00Z. Para convertir a una fecha:

  1. Divida por 1000 para obtener milisegundos
  2. Ajustar a una época de 1970-01-01T00:00:00Z
  3. Pase el valor resultante al constructor Fecha

P.ej

var timeValue = '13170147422089597';
new Date(Date.UTC(1601,0,1) + timeValue / 1000); // 2018-05-07T06:17:02.089Z

Almacenar el valor Date.UTC(1601,0,1) como una constante (-11644473600000) y convertirlo en una función da:

function chromeTimeValueToDate(tv) 
  var epoch = -11644473600000;
  return new Date(epoch + tv / 1000);


// Example
['13170147422089597',
 '13150297844686316',
 '13115171381595644'].forEach( tv => 
   console.log(chromeTimeValueToDate(tv))
);

Es WebKit/Chrome Timestamp, que representa microsegundos desde el 1/1/1601 UTC.

Viene de Windows NT Timestamp (como 100 nanosegundos desde 1601/1/1 UTC), disponible como estructura FileTime.

Hay un convertidor de marca de tiempo WebKit/Chrome en línea en https://www.epochconverter.com/webkit

que proporciona su código allí también.

Sin embargo, el código está en Python2, así que lo transcribo a Python3 de la siguiente manera:

import datetime
def date_from_webkit(webkit_timestamp):
    epoch_start = datetime.datetime(1601,1,1)
    delta = datetime.timedelta(microseconds=int(webkit_timestamp))
    print(epoch_start + delta) # py3 requires () for print

date_from_webkit(int(input('Enter a Webkit timestamp to convert: '))) # py3 integrates raw_input() and input() into input()

Tienes la posibilidad recomendar este tutorial si lograste el éxito.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *