java - 如何将时间戳转换回相同的 UUID 字符串

标签 java uuid hector

我使用以下代码为用户创建登录 ID

String login = me.prettyprint.cassandra.utils.TimeUUIDUtils.getUniqueTimeUUIDinMillis().toString();

现在我需要将此登录名转换回长登录名,因此我使用以下代码

long timeStamp = java.util.UUID.fromString(login).timestamp();

现在我想从时间戳恢复登录。我该怎么做?

最佳答案

      final long NUM_100NS_INTERVALS_SINCE_UUID_EPOCH = 0x01b21dd213814000L;

      UUID u1 = TimeUUIDUtils.getUniqueTimeUUIDinMillis();
      final long t1 = u1.timestamp();

      long tmp = (t1 - NUM_100NS_INTERVALS_SINCE_UUID_EPOCH) / 10000;

      UUID u2 = TimeUUIDUtils.getTimeUUID(tmp);
      long t2 = u2.timestamp();

      System.out.println(u2.equals(u1));
      System.out.println(t2 == t1);

这有效!!

关于java - 如何将时间戳转换回相同的 UUID 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22063262/

相关文章:

mysql - 从插入语句中检索 UUID

node.js - 在 Gulp 3.9.1 中的管道之间传递变量

java - 如何使用 Hector API 将序列化的 Java 对象插入到 Cassandra 中?

java - 用 hector 更快地计算 cassandra 行中的总列数

java - 为什么 Bytebuddy 不能检测 org.slf4j 类?

java - 如何用Java编写这个sql代码

java - JDK 使用什么命名空间来生成名称为 UUIDFromBytes 的 UUID?

java - 使用 JDBC 连接到 MySQL 数据库

java - 我是不是误解了 Java Bean 方法命名约定,或者这是一种异常情况?

java - Cassandra key 缓存为空