Class CivilTimeEncoder


  • public final class CivilTimeEncoder
    extends Object
    Ported from ZetaSQL CivilTimeEncoder Original code can be found at: https://github.com/google/zetasql/blob/master/java/com/google/zetasql/CivilTimeEncoder.java Encoder for TIME and DATETIME values, according to civil_time encoding.

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

    Range and bits for date/time fields
    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 Detail

      • encodePacked64TimeMicros

        public static long encodePacked64TimeMicros​(org.threeten.bp.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(LocalTime)
      • decodePacked64TimeMicros

        public static org.threeten.bp.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-----|
         
        See Also:
        encodePacked64TimeMicros(LocalTime)
      • encodePacked64DatetimeMicros

        public static long encodePacked64DatetimeMicros​(org.threeten.bp.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)
      • decodePacked64DatetimeMicros

        public static org.threeten.bp.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-----|
         
        See Also:
        encodePacked64DatetimeMicros(LocalDateTime)