Search code examples
javauuidhector

How to convert timestamp back to same UUID string


I create my login id for a user using the following code

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

Now i have a requirement to convert this login back to long so I am using the following code

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

Now i want my login back from the timeStamp. How can i do this.?


Solution

  •       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);
    

    This works!!