2个版本
0.1.3 | 2022年5月11日 |
---|---|
0.1.2 | 2022年5月11日 |
#26 in #retrieve
8KB
154 行
rtime.rs
从远程服务器获取当前时间。
它通过从十二个非常受欢迎的主机通过https请求时间戳来实现。一旦它收到至少三个响应,它就选择时间差最小的两个。然后从这两个中选择最旧的一个。最后,它确保时间是单调的。
使用
使用 rtime_rs::now()
获取远程时间。
// Get the current internet time, returns chrono::DateTime<Utc>.
// Fails if the Internet is offline.
let now = rtime_rs::now().unwrap();
println!("{}", now);
// OUTPUT:
// 2022-05-11 23:05:49 UTC
保持同步
rtime_rs::now()
会稍微慢一些,通常为200毫秒或更多,因为它必须对三个或更多远程服务器进行往返调用以确定正确的时间。
您可以通过在程序开始时调用 rtime_rs::sync()
来使其像内置的 std::time::SystemTime::now()
一样快。
// Start syncing with the Internet time. Timeouts after 15 seconds when the
// Internet is offline.
rtime_rs::sync(Duration::from_secs(15)).unwrap();
// All following rtime_rs::now() calls will now be quick and without the need
// for checking its result, because they will never fail.
let now = rtime_rs::now().unwrap();
println!("{}", now);
// OUTPUT:
// 2022-05-11 23:06:52.000072083 UTC
在 main()
函数顶部调用 rtime_rs::sync()
是一个好主意。
依赖项
~3MB
~79K SLoC