我使用以下代码为用户创建登录 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/