Class CivilTimeEncoder


  • public final class CivilTimeEncoder
    extends java.lang.Object
    Encoder for TIME and DATETIME values, according to civil_time encoding. Copied out of the zetasql package.

    The valid range and number of bits required by each date/time field is as the following:

    Field Range #Bits
    Year [1, 9999] 14
    Month [1, 12] 4
    Day [1, 31] 5
    Hour [0, 23] 5
    Minute [0, 59] 6
    Second [0, 59]* 6
    Micros [0, 999999] 20
    Nanos [0, 999999999] 30

    * Leap second is not supported.

    When encoding the TIME or DATETIME into a bit field, larger date/time field is on the more significant side.

    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static org.joda.time.LocalTime decodePacked32TimeSeconds​(int bitFieldTimeSeconds)
      Decodes bitFieldTimeSeconds as a LocalTime with seconds precision.
      static java.time.LocalTime decodePacked32TimeSecondsAsJavaTime​(int bitFieldTimeSeconds)
      Decodes bitFieldTimeSeconds as a LocalTime with seconds precision.
      static org.joda.time.LocalDateTime decodePacked64DatetimeMicros​(long bitFieldDatetimeMicros)
      Decodes bitFieldDatetimeMicros as a LocalDateTime with microseconds precision.
      static java.time.LocalDateTime decodePacked64DatetimeMicrosAsJavaTime​(long bitFieldDatetimeMicros)
      Decodes bitFieldDatetimeMicros as a LocalDateTime with microseconds precision.
      static org.joda.time.LocalDateTime decodePacked64DatetimeSeconds​(long bitFieldDatetimeSeconds)
      Decodes bitFieldDatetimeSeconds as a LocalDateTime with seconds precision.
      static java.time.LocalDateTime decodePacked64DatetimeSecondsAsJavaTime​(long bitFieldDatetimeSeconds)
      Decodes bitFieldDatetimeSeconds as a LocalDateTime with seconds precision.
      static org.joda.time.LocalTime decodePacked64TimeMicros​(long bitFieldTimeMicros)
      Decodes bitFieldTimeMicros as a LocalTime with microseconds precision.
      static java.time.LocalTime decodePacked64TimeMicrosAsJavaTime​(long bitFieldTimeMicros)
      Decodes bitFieldTimeMicros as a LocalTime with microseconds precision.
      static org.joda.time.LocalTime decodePacked64TimeNanos​(long bitFieldTimeNanos)
      Decodes bitFieldTimeNanos as a LocalTime with nanoseconds precision.
      static java.time.LocalTime decodePacked64TimeNanosAsJavaTime​(long bitFieldTimeNanos)
      Decodes bitFieldTimeNanos as a LocalTime with nanoseconds precision.
      static int encodePacked32TimeSeconds​(java.time.LocalTime time)
      Encodes time as a 4-byte integer with seconds precision.
      static int encodePacked32TimeSeconds​(org.joda.time.LocalTime time)
      Encodes time as a 4-byte integer with seconds precision.
      static long encodePacked64DatetimeMicros​(java.time.LocalDateTime dateTime)
      Encodes dateTime as a 8-byte integer with microseconds precision.
      static long encodePacked64DatetimeMicros​(org.joda.time.LocalDateTime dateTime)
      Encodes dateTime as a 8-byte integer with microseconds precision.
      static long encodePacked64DatetimeSeconds​(java.time.LocalDateTime dateTime)
      Encodes dateTime as a 8-byte integer with seconds precision.
      static long encodePacked64DatetimeSeconds​(org.joda.time.LocalDateTime dateTime)
      Encodes dateTime as a 8-byte integer with seconds precision.
      static long encodePacked64TimeMicros​(java.time.LocalTime time)
      Encodes time as a 8-byte integer with microseconds precision.
      static long encodePacked64TimeMicros​(org.joda.time.LocalTime time)
      Encodes time as a 8-byte integer with microseconds precision.
      static long encodePacked64TimeNanos​(java.time.LocalTime time)
      Encodes time as a 8-byte integer with nanoseconds precision.
      static long encodePacked64TimeNanos​(org.joda.time.LocalTime time)
      Encodes time as a 8-byte integer with nanoseconds precision.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Method Detail

      • encodePacked32TimeSeconds

        public static int encodePacked32TimeSeconds​(java.time.LocalTime time)
        Encodes time as a 4-byte integer with seconds precision.

        Encoding is as the following:

              3         2         1
         MSB 10987654321098765432109876543210 LSB
                            | H ||  M ||  S |
         
        See Also:
        decodePacked32TimeSecondsAsJavaTime(int)
      • decodePacked32TimeSeconds

        public static org.joda.time.LocalTime decodePacked32TimeSeconds​(int bitFieldTimeSeconds)
        Decodes bitFieldTimeSeconds as a LocalTime with seconds precision.

        Encoding is as the following:

              3         2         1
         MSB 10987654321098765432109876543210 LSB
                            | H ||  M ||  S |
         
        See Also:
        encodePacked32TimeSeconds(LocalTime), #encodePacked32TimeSecondsAsJavaTime(int)
      • decodePacked32TimeSecondsAsJavaTime

        public static java.time.LocalTime decodePacked32TimeSecondsAsJavaTime​(int bitFieldTimeSeconds)
        Decodes bitFieldTimeSeconds as a LocalTime with seconds precision.

        Encoding is as the following:

              3         2         1
         MSB 10987654321098765432109876543210 LSB
                            | H ||  M ||  S |
         
        See Also:
        encodePacked32TimeSeconds(java.time.LocalTime)
      • encodePacked64TimeMicros

        public static long encodePacked64TimeMicros​(org.joda.time.LocalTime time)
        Encodes time as a 8-byte integer with microseconds precision.

        Encoding is as the following:

                6         5         4         3         2         1
         MSB 3210987654321098765432109876543210987654321098765432109876543210 LSB
                                        | H ||  M ||  S ||-------micros-----|
         
        See Also:
        decodePacked64TimeMicros(long), encodePacked64TimeMicros(java.time.LocalTime)
      • encodePacked64TimeMicros

        public static long encodePacked64TimeMicros​(java.time.LocalTime time)
        Encodes time as a 8-byte integer with microseconds precision.

        Encoding is as the following:

                6         5         4         3         2         1
         MSB 3210987654321098765432109876543210987654321098765432109876543210 LSB
                                        | H ||  M ||  S ||-------micros-----|
         
        See Also:
        decodePacked64TimeMicrosAsJavaTime(long)
      • decodePacked64TimeMicros

        public static org.joda.time.LocalTime decodePacked64TimeMicros​(long bitFieldTimeMicros)
        Decodes bitFieldTimeMicros as a LocalTime with microseconds precision.

        Encoding is as the following:

                6         5         4         3         2         1
         MSB 3210987654321098765432109876543210987654321098765432109876543210 LSB
                                        | H ||  M ||  S ||-------micros-----|
         

        Warning: LocalTime only supports milliseconds precision. Result is truncated.

        See Also:
        encodePacked64TimeMicros(LocalTime), decodePacked64TimeMicrosAsJavaTime(long)
      • decodePacked64TimeMicrosAsJavaTime

        public static java.time.LocalTime decodePacked64TimeMicrosAsJavaTime​(long bitFieldTimeMicros)
        Decodes bitFieldTimeMicros as a LocalTime with microseconds precision.

        Encoding is as the following:

                6         5         4         3         2         1
         MSB 3210987654321098765432109876543210987654321098765432109876543210 LSB
                                        | H ||  M ||  S ||-------micros-----|
         
        See Also:
        encodePacked64TimeMicros(java.time.LocalTime)
      • encodePacked64TimeNanos

        public static long encodePacked64TimeNanos​(org.joda.time.LocalTime time)
        Encodes time as a 8-byte integer with nanoseconds precision.

        Encoding is as the following:

                6         5         4         3         2         1
         MSB 3210987654321098765432109876543210987654321098765432109876543210 LSB
                              | H ||  M ||  S ||---------- nanos -----------|
         
        See Also:
        decodePacked64TimeNanos(long), encodePacked64TimeNanos(java.time.LocalTime)
      • encodePacked64TimeNanos

        public static long encodePacked64TimeNanos​(java.time.LocalTime time)
        Encodes time as a 8-byte integer with nanoseconds precision.

        Encoding is as the following:

                6         5         4         3         2         1
         MSB 3210987654321098765432109876543210987654321098765432109876543210 LSB
                              | H ||  M ||  S ||---------- nanos -----------|
         
        See Also:
        decodePacked64TimeNanosAsJavaTime(long)
      • decodePacked64TimeNanos

        public static org.joda.time.LocalTime decodePacked64TimeNanos​(long bitFieldTimeNanos)
        Decodes bitFieldTimeNanos as a LocalTime with nanoseconds precision.

        Encoding is as the following:

                6         5         4         3         2         1
         MSB 3210987654321098765432109876543210987654321098765432109876543210 LSB
                              | H ||  M ||  S ||---------- nanos -----------|
         

        Warning: LocalTime only supports milliseconds precision. Result is truncated.

        See Also:
        encodePacked64TimeNanos(LocalTime), decodePacked64TimeNanosAsJavaTime(long)
      • decodePacked64TimeNanosAsJavaTime

        public static java.time.LocalTime decodePacked64TimeNanosAsJavaTime​(long bitFieldTimeNanos)
        Decodes bitFieldTimeNanos as a LocalTime with nanoseconds precision.

        Encoding is as the following:

                6         5         4         3         2         1
         MSB 3210987654321098765432109876543210987654321098765432109876543210 LSB
                              | H ||  M ||  S ||---------- nanos -----------|
         
        See Also:
        encodePacked64TimeNanos(java.time.LocalTime)
      • encodePacked64DatetimeSeconds

        public static long encodePacked64DatetimeSeconds​(java.time.LocalDateTime dateTime)
        Encodes dateTime as a 8-byte integer with seconds precision.

        Encoding is as the following:

                6         5         4         3         2         1
         MSB 3210987654321098765432109876543210987654321098765432109876543210 LSB
                                     |--- year ---||m || D || H ||  M ||  S |
         
        See Also:
        decodePacked64DatetimeSecondsAsJavaTime(long)
      • decodePacked64DatetimeSeconds

        public static org.joda.time.LocalDateTime decodePacked64DatetimeSeconds​(long bitFieldDatetimeSeconds)
        Decodes bitFieldDatetimeSeconds as a LocalDateTime with seconds precision.

        Encoding is as the following:

                6         5         4         3         2         1
         MSB 3210987654321098765432109876543210987654321098765432109876543210 LSB
                                     |--- year ---||m || D || H ||  M ||  S |
         
        See Also:
        encodePacked64DatetimeSeconds(LocalDateTime), decodePacked64DatetimeSecondsAsJavaTime(long)
      • decodePacked64DatetimeSecondsAsJavaTime

        public static java.time.LocalDateTime decodePacked64DatetimeSecondsAsJavaTime​(long bitFieldDatetimeSeconds)
        Decodes bitFieldDatetimeSeconds as a LocalDateTime with seconds precision.

        Encoding is as the following:

                6         5         4         3         2         1
         MSB 3210987654321098765432109876543210987654321098765432109876543210 LSB
                                     |--- year ---||m || D || H ||  M ||  S |
         
        See Also:
        encodePacked64DatetimeSeconds(java.time.LocalDateTime)
      • encodePacked64DatetimeMicros

        public static long encodePacked64DatetimeMicros​(org.joda.time.LocalDateTime dateTime)
        Encodes dateTime as a 8-byte integer with microseconds precision.

        Encoding is as the following:

                6         5         4         3         2         1
         MSB 3210987654321098765432109876543210987654321098765432109876543210 LSB
                 |--- year ---||m || D || H ||  M ||  S ||-------micros-----|
         
        See Also:
        decodePacked64DatetimeMicros(long), encodePacked64DatetimeMicros(java.time.LocalDateTime)
      • encodePacked64DatetimeMicros

        public static long encodePacked64DatetimeMicros​(java.time.LocalDateTime dateTime)
        Encodes dateTime as a 8-byte integer with microseconds precision.

        Encoding is as the following:

                6         5         4         3         2         1
         MSB 3210987654321098765432109876543210987654321098765432109876543210 LSB
                 |--- year ---||m || D || H ||  M ||  S ||-------micros-----|
         
        See Also:
        decodePacked64DatetimeMicrosAsJavaTime(long)
      • decodePacked64DatetimeMicros

        public static org.joda.time.LocalDateTime decodePacked64DatetimeMicros​(long bitFieldDatetimeMicros)
        Decodes bitFieldDatetimeMicros as a LocalDateTime with microseconds precision.

        Encoding is as the following:

                6         5         4         3         2         1
         MSB 3210987654321098765432109876543210987654321098765432109876543210 LSB
                 |--- year ---||m || D || H ||  M ||  S ||-------micros-----|
         

        Warning: LocalDateTime only supports milliseconds precision. Result is truncated.

        See Also:
        encodePacked64DatetimeMicros(LocalDateTime), decodePacked64DatetimeMicrosAsJavaTime(long)
      • decodePacked64DatetimeMicrosAsJavaTime

        public static java.time.LocalDateTime decodePacked64DatetimeMicrosAsJavaTime​(long bitFieldDatetimeMicros)
        Decodes bitFieldDatetimeMicros as a LocalDateTime with microseconds precision.

        Encoding is as the following:

                6         5         4         3         2         1
         MSB 3210987654321098765432109876543210987654321098765432109876543210 LSB
                 |--- year ---||m || D || H ||  M ||  S ||-------micros-----|
         
        See Also:
        encodePacked64DatetimeMicros(java.time.LocalDateTime)