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:
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.
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-----|
Name | Description |
bitFieldDatetimeMicros | long |
Type | Description |
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-----|
Name | Description |
bitFieldTimeMicros | long |
Type | Description |
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-----|
Name | Description |
dateTime | org.threeten.bp.LocalDateTime |
Type | Description |
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-----|
Name | Description |
time | org.threeten.bp.LocalTime |
Type | Description |
long |