gpt4 book ai didi

ruby - 如何在 ruby​​ 中将 timeuuid 转换为时间戳

转载 作者:数据小太阳 更新时间:2023-10-29 07:55:00 26 4
gpt4 key购买 nike

我是一名 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);

}

}

最佳答案

快速浏览一下其他语言的答案,这可能对您有帮助:

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

关于ruby - 如何在 ruby​​ 中将 timeuuid 转换为时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43751943/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com