node.js - uuidv4 - javascript uuid
¿Cómo extraer la marca de tiempo del UUID v1(TimeUUID) usando javascript? (3)
Puede usar las funciones unixTimestampOf
o dateOf
en CQL3, o puede hacerlo usted mismo, de la manera difícil:
El tiempo está codificado en los 64 bits superiores del UUID, pero está intercalado con algunas otras piezas, por lo que no es súper sencillo extraer un tiempo.
Si n
es la representación entera de TimeUUID
entonces puedes extraer la época de UNIX así:
n = (value >> 64)
t = 0
t |= (n & 0x0000000000000fff) << 48
t |= (n & 0x00000000ffff0000) << 16
t |= (n & 0xffffffff00000000) >> 32
t -= 122192928000000000
seconds = t/10_000_000
microseconds = (t - seconds * 10_000_000)/10.0
este código es de mi controlador Ruby CQL3, cql-rb, y se puede encontrar en su totalidad aquí: https://github.com/iconara/cql-rb/blob/master/lib/cql/time_uuid.rb
Usé este recurso: http://www.famkruithof.net/guid-uuid-timebased.html , y el RFC para implementar ese código.
Uso el módulo Cassandra DB y Helenus para nodejs para operar con esto. Tengo algunas filas que contienen columnas TimeUUID. ¿Cómo obtener la marca de tiempo de TimeUUID en javascript?
El módulo node-uuid para nodejs contiene el método para convertir uuid v1 en timestamp
¡esta lib ( UUID_to_Date ) es muy simple y rápida! solo usó la función de Cadena nativa. tal vez esta API de Javascript puede ayudarlo a convertir el formato de UUID a fecha, JavaScript es un lenguaje simple y este código simple puede ayudar a escribir API para cada idioma.
esta API convierte el UUID v1 en sec desde 1970-01-01
todos ustedes necesitan:
get_time_int = function (uuid_str) {
var uuid_arr = uuid_str.split( ''-'' ),
time_str = [
uuid_arr[ 2 ].substring( 1 ),
uuid_arr[ 1 ],
uuid_arr[ 0 ]
].join( '''' );
return parseInt( time_str, 16 );
};
get_date_obj = function (uuid_str) {
var int_time = this.get_time_int( uuid_str ) - 122192928000000000,
int_millisec = Math.floor( int_time / 10000 );
return new Date( int_millisec );
};
Ejemplo:
var date_obj = get_date_obj( ''8bf1aeb8-6b5b-11e4-95c0-001dba68c1f2'' );
date_obj.toLocaleString( );// ''11/13/2014, 9:06:06 PM''