我是一名Java开发人员&不知道Ruby - 但我正在尝试编写一个logstash插件,可以帮助我将timeuuid转换为时间戳(MM / dd / yyyy-HH:mm:ss.SSS)。
以下是它的java版本。
import java.util.Date;
import java.util.UUID;
public class TimeUUID {
static final long NUM_100NS_INTERVALS_SINCE_UUID_EPOCH = 0x01b21dd213814000L;
public static long getTimeFromUUID(UUID uuid) {
return (uuid.timestamp() - NUM_100NS_INTERVALS_SINCE_UUID_EPOCH) / 10000;
}
public static void main(String[] args) {
String uuidString = "28442f00-2e98-11e2-0000-89a3a6fab5ef";
UUID uuid = UUID.fromString(uuidString);
long time = getTimeFromUUID(uuid);
Date date = new Date(time);
System.out.println(date);
}
}
答案 0 :(得分:4)
通过快速浏览其他语言的答案,这可能会对您有所帮助:
uuid = "28442f00-2e98-11e2-0000-89a3a6fab5ef"
NUM_100NS_INTERVALS_SINCE_UUID_EPOCH = 0x01b21dd213814000
low, mid, version_high = uuid.split('-')
high = version_high[1,3]
hex = [high, mid, low].join
puts Time.at((hex.to_i(16) - NUM_100NS_INTERVALS_SINCE_UUID_EPOCH) / 10000000)
# 2012-11-14 21:16:22 +0100
您也可以使用gem(simple_uuid
)。
require 'simple_uuid'
puts Time.at(SimpleUUID::UUID.new(uuid).seconds)
# 2012-11-14 21:16:22 +0100