Class CivilTimeEncoder (3.4.0)

public final class CivilTimeEncoder

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.

Inheritance

java.lang.Object > CivilTimeEncoder

Static Methods

decodePacked64DatetimeMicros(long bitFieldDatetimeMicros)

public static 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)

Parameter
NameDescription
bitFieldDatetimeMicroslong
Returns
TypeDescription
org.threeten.bp.LocalDateTime

decodePacked64TimeMicros(long bitFieldTimeMicros)

public static 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)

Parameter
NameDescription
bitFieldTimeMicroslong
Returns
TypeDescription
org.threeten.bp.LocalTime

encodePacked64DatetimeMicros(LocalDateTime dateTime)

public static long encodePacked64DatetimeMicros(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)

Parameter
NameDescription
dateTimeorg.threeten.bp.LocalDateTime
Returns
TypeDescription
long

encodePacked64TimeMicros(LocalTime time)

public static long encodePacked64TimeMicros(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)

Parameter
NameDescription
timeorg.threeten.bp.LocalTime
Returns
TypeDescription
long