#unix-timestamp #signed-integer #epoch #compatible #128-bit #time-t #anchored

geotime

提供与Unix time_t兼容并锚定在Unix纪元的128位有符号时间戳

1个不稳定版本

0.0.6 2023年1月15日
0.0.5 2023年1月15日
0.0.4 2023年1月15日
0.0.3 2023年1月14日
0.0.2 2023年1月14日

16#128-bit

每月25次下载

MIT许可证

25KB
501 行代码

Geotime

Geotime提供与Unix time_t兼容并锚定在Unix纪元的128位有符号整数时间戳。请参阅此处的文档。

use geotime::Geotime;

let dt = Geotime::from(0);
assert_eq!(dt.display_string("%Y-%m-%d"), "1970-01-01");

let dt = Geotime::from((i64::MAX as i128) + 1);
assert_eq!(dt.display_string("%Y"), "299.87 M years from now");

let dt = Geotime::from(-(i64::MAX as i128) * 100);
assert_eq!(dt.display_string("%Y"), "29.99 B years ago");

lib.rs:

Geotime

Geotime提供与Unix time_t兼容并锚定在Unix纪元的128位有符号整数时间戳。

use geotime::Geotime;

let dt = Geotime::from(0);
assert_eq!(dt.display_string("%Y-%m-%d"), "1970-01-01");

let dt = Geotime::from((i32::MAX as i128) * 1000);
assert_eq!(dt.display_string("%Y-%m-%d"), "2038-01-19");

let dt = Geotime::from((i64::MAX as i128) + 1);
assert_eq!(dt.display_string("%Y"), "299.87 M years from now");

let dt = Geotime::from(-(i64::MAX as i128) * 100);
assert_eq!(dt.display_string("%Y"), "29.99 B years ago");

128位时间戳使我们能够以毫秒级精度表示天体物理、地质、历史和当代时间尺度的事件时间。我们使用毫秒作为处理近期事件时间戳的便利。为了保持与Unix时间戳的清晰映射,Geotime继承了闰秒的相关内容。时间戳可以表示1970年前后±5e27年的任何日期。

提供多种序列化格式,以保留时间戳的词法顺序。

该项目目前尚处于草稿阶段,可能很容易引发panic。计划逐渐用错误替换panic,但可能还需要一段时间。

依赖项

~3.5MB
~67K SLoC