我使用Cassandra DB和Helenus模块来操作。 我有一些包含TimeUUID列的行。 在JavaScript中如何从TimeUUID获取时间戳?
我使用Cassandra DB和Helenus模块来操作。 我有一些包含TimeUUID列的行。 在JavaScript中如何从TimeUUID获取时间戳?
这个库(UUID_to_Date)非常简单和快速!!只使用了原生字符串函数。也许这个Javascript API可以帮助您将UUID转换为日期格式,Javascript是一种简单的语言,这个简单的代码可以帮助编写适用于每种语言的API。
这个API将UUID v1转换为距离1970年01月01日的秒数。
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 );
};
示例: var date_obj = get_date_obj( '8bf1aeb8-6b5b-11e4-95c0-001dba68c1f2' );
date_obj.toLocaleString( );// '11/13/2014, 9:06:06 PM'
unixTimestampOf
或dateOf
函数,或者你可以自己动手,采用一些困难的方法:n
是TimeUUID
的整数表示形式,则可以按如下方式提取UNIX纪元: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
nodejs的node-uuid模块包含将uuid v1转换为时间戳的方法。
v1time()
你有点击答案中的链接吗? - Vadim