如何从 UUID 类型 1 获取日期/时间

2024-02-15

我已经包含了以下 UUID 库

compile group: 'com.fasterxml.uuid', name: 'java-uuid-generator', version: '3.1.5'

在我的构建中。

我有一些这样的代码

        NoArgGenerator timeBasedGenerator = Generators.timeBasedGenerator()
        UUID tuid = timeBasedGenerator.generate()
        Timestamp timestamp = new Timestamp ((tuid.timestamp()/1000) as Long)
        Date dateTime = new Date (timestamp.getTime())

然而,当我尝试查看日期时,它与应有的样子完全不同,例如我得到uid fef57eca-7c8b-11e8-bedd-992c2ac3197a was Sun Feb 06 07:55:54 GMT 6327今天是什么时候30/06/2018

有谁知道如何使用基于时间的 UUID 正确提取真实日期和时间fasterxml.uuid图书馆?

但难住了

ps 尝试了这个

        UUID tuid = timeBasedGenerator.generate()
        Long t = tuid.timestamp()
        Timestamp timestamp = new Timestamp (t)
        Date dateTime = new Date (timestamp.getTime())

它给出了一个 uidff79d7d9-7cb5-11e8-976c-6ba57a5e9636和日期Thu Aug 14 11:11:40 BST 4359073


为了获得完整的 100ns 精度java.util.Instant,您可以执行以下操作:

private static final long NUM_HUNDRED_NANOS_IN_A_SECOND = 10_000_000L;

private static final long NUM_HUNDRED_NANOS_FROM_UUID_EPOCH_TO_UNIX_EPOCH = 122_192_928_000_000_000L;


/**
 * Extracts the Instant (with the maximum available 100ns precision) from the given time-based (version 1) UUID.
 *
 * @return the {@link Instant} extracted from the given time-based UUID
 * @throws UnsupportedOperationException If this UUID is not a version 1 UUID
 */
public static Instant getInstantFromUUID(final UUID uuid) {
    final long hundredNanosSinceUnixEpoch = uuid.timestamp() - NUM_HUNDRED_NANOS_FROM_UUID_EPOCH_TO_UNIX_EPOCH;
    final long secondsSinceUnixEpoch = hundredNanosSinceUnixEpoch / NUM_HUNDRED_NANOS_IN_A_SECOND;
    final long nanoAdjustment = ((hundredNanosSinceUnixEpoch % NUM_HUNDRED_NANOS_IN_A_SECOND) * 100);
    return Instant.ofEpochSecond(secondsSinceUnixEpoch, nanoAdjustment);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从 UUID 类型 1 获取日期/时间 的相关文章

随机推荐

  • PHP 字符串转数组

    我有一个字符串 当我 var dump 返回以下内容时 string 20 key1 key1 value key2 key2 value 如何将其转换为一个数组 在 var dump 时返回以下内容 array 2 key1 gt str
  • MVC 5 阻止通过 Iframe 访问内容

    自从从 MVC4 升级到 MVC5 以来 我注意到我的网页中添加了一个额外的服务器标头 X 框架选项 SAMEORIGIN 我了解添加此标签的安全优势 但其中一个页面应该包含在其他项目 在其他域上 的 iframe 中 这个额外的标头会阻止
  • 将 git hook 添加到谷歌云存储库

    谷歌云附带的功能之一是git 仓库 https cloud google com source repositories docs 是否可以向此存储库添加挂钩 我想要收到推送 但我不知道如何访问 git hooks 如果您将代码托管在git
  • 假互联网差

    我正在尝试在网络状况不佳的情况下测试我的 iPhone 和 Android 应用程序 我记得不久前我读到过一个程序 它可以伪造不同类型的不良互联网 有谁记得这个程序叫什么或者是否有类似的东西我可以用来完成这个任务 对于 iOS 正如其他人所
  • 如何将自定义 HTML 内容添加到 FastAPI Swagger UI 文档?

    我需要在 FastAPI 应用程序的 Swagger UI 中添加一个自定义按钮 我发现这个答案 https stackoverflow com questions 74661044 add a custom javascript to t
  • 如何根据条件在 Pandas 中构建新列(新列应输出字符串)

    我正在尝试使用条件在 pandas 中创建一个列来创建定性观察 例如 如果数据框如下所示 Distance 1 1 2 5 3 40 4 15 我想创建一个新列 我们称之为df length 这是对距离的观察 例如 if df Distan
  • Hibernate Annotations - 如何从映射中排除 bean 字段?

    我有一个包含一些字段的 bean 其中两个字段不打算由 hibernate 映射 errorStatus 和 operationResultMessage 我如何告诉 Hibernate 通过注释 我不想映射这些字段 bean中的映射表没有
  • Elasticsearch:“function_score”与“boost_mode”:“replace”忽略函数分数

    我正在尝试使用 function score 中定义的不同函数来修改正常查询的分数 为了找出我的函数计算出的分数是什么 我将 boost mode 指定为 replace 然而 这使得所有分数保持不变 全部等于 1 考虑以下查询 query
  • 在 Android M 上对 TextInputLayout 设置错误后更改 EditText 背景时出现问题

    我已将自定义背景设置为 Xml 文件中的 EditText 验证后 我在运行时为 EditText 设置不同的背景 并为 TextInputLayout 设置错误 但在Android M中 不是设置背景资源 而是设置EditText的背景颜
  • Java 中的空语句(不是 for 循环)有什么用? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我正在查看 Eclipse 代码样式
  • Java从MIDI键盘获取输入

    我用 java 设计了自己的合成器 现在想将它与 midi 键盘连接 我的下面的课程搜索所有具有发射器的 MIDI 设备 它成功找到了我的 MIDI 键盘 我将自己的接收器添加到每个设备的每个发射器中 以便它能够接收所有可能的信号 通过阅读
  • 将函数传递到remove_if时出现C++编译错误

    这是我的代码片段 void RoutingProtocolImpl removeAllInfinity dv erase std remove if dv begin dv end hasInfCost dv end bool Routin
  • 序列化 Hibernate 对象时抛出奇怪的 Jackson 异常

    杰克逊抛出了一个奇怪的异常 我不知道如何解决 我正在使用 Spring Hibernate 和 Jackson 我已经考虑到延迟加载是导致问题的原因 但我已采取措施告诉杰克逊不要处理各种属性 如下所示 JsonIgnorePropertie
  • iOS 7 播放视频后状态栏消失

    我不是唯一一个遇到此类问题的人 这是另一张 播放 YouTube 视频后状态栏高度发生变化 https stackoverflow com questions 15483717 status bar height changes after
  • 什么是模板推导指南以及我们什么时候应该使用它们?

    C 17标准引入了 模板推导指南 我认为它们与此版本标准中引入的构造函数的新模板参数推导有关 但我还没有看到关于它们是什么以及它们的用途的简单的 常见问题解答风格的解释 C 17 中的模板推导指南是什么 为什么 以及何时 我们需要它们 我如
  • 如何在带有 MacPorts 的 MacOS Lion 上设置/使用 GDB 7

    我在 MacOS Lion 上使用 GDB 7 7 3 时遇到了麻烦 我所做的是 sudo port install gdb 之后GDB被安装到 opt local bin ggdb 但是当我尝试执行 GDB 时 我总是在开始时收到以下信息
  • 如何在 Flex 应用程序中运行外部 SWF?

    编辑 由于答案 我更改了发布的代码 我已经添加了 Security allowDomain 行 该行给我一个错误 那么 如何才能做到这一点呢 我想在 Flex 应用程序中运行 Action Script 3 0 应用程序 为此 我执行了以下
  • 使用 JSON.Net 编写属性名称

    我正在使用 JSON net 在 C 中编写一些 json 我可以像这样生成 JSON id 234 name abc 我想做的是得到这个 DATA id 234 name abc 这是我正在使用的 json net 代码 StringBu
  • 将 C# 类(类库)转换为 SQL DDL(表)

    我必须将一组C 类 类库 转换为SQL表以供SQL Server使用 这样数据就可以存储在数据库中并通过数据库进行操作 问题是这些类的数量很大 超过 1000 个类 并且手动设置这样的数据库模式 表 索引 存储过程等 需要很长时间 更不用说
  • 如何从 UUID 类型 1 获取日期/时间

    我已经包含了以下 UUID 库 compile group com fasterxml uuid name java uuid generator version 3 1 5 在我的构建中 我有一些这样的代码 NoArgGenerator