43个发布版本
0.9.0 | 2024年8月4日 |
---|---|
0.8.1 | 2024年7月25日 |
0.8.0 | 2024年2月8日 |
0.7.0 | 2023年10月5日 |
0.2.4 | 2021年7月19日 |
#38 在 日期和时间 类别中
340 每月下载量
在 fyi_msg 中使用
140KB
2.5K SLoC
UTC2K
UTC2K是一个快速且精简的日期/时间库,只关心本世纪(2000年1月1日00:00:00至2099年12月31日23:59:59)的UTC事件。
考虑到这个非常显著的约束,UTC2K可以进行以下操作:
- 在Unix时间戳(
u32
)之间进行转换; - 在
YYYY-MM-DD
和YYYY-MM-DD hh:mm:ss
格式的日期字符串之间进行转换; - 执行加/减(以秒为单位),检查或饱和;
- 计算日期的序数;
- 计算从午夜起经过的秒数;
就是这样!
与像chrono
和time
这样的更健壮的库相比,UTC2K可以快得多,尤其是在字符串解析和打印方面。
这个库仍在开发中,当然还有进一步提高性能的空间。
如果您有任何改进建议,请随时在Github上创建一个问题!
示例
主要的日期对象是Utc2k
。
use utc2k::Utc2k;
use std::convert::TryFrom;
let date = Utc2k::default(); // 2000-01-01 00:00:00
let date = Utc2k::now(); // The current time.
let date = Utc2k::from(4_102_444_799_u32); // 2099-12-31 23:59:59
let date = Utc2k::new(2010, 10, 31, 15, 30, 0); // 2010-10-31 15:30:00
// String parsing is fallible, but flexible. So long as the numbers we
// need are in the right place, it will be fine. (At least, it won't error
// out; if the date string is trying to communicate a time zone, that won't
// be listened to.)
assert!(Utc2k::try_from("2099-12-31 23:59:59").is_ok()); // Fine.
assert!(Utc2k::try_from("2099-12-31T23:59:59.0000Z").is_ok()); // Also fine.
assert!(Utc2k::try_from("January 1, 2010 @ Eleven O'Clock").is_err()); // Nope!
还有FmtUtc2k
,用于字符串表示。
use utc2k::{FmtUtc2k, Utc2k};
use std::convert::TryFrom;
// You can generate it from an existing Utc2k with either:
assert_eq!(Utc2k::default().formatted(), FmtUtc2k::from(Utc2k::default()));
// You could also skip `Utc2k` and seed directly from a timestamp or date/time
// string.
let fmt = FmtUtc2k::from(4_102_444_799_u32);
let fmt = FmtUtc2k::try_from("2099-12-31 23:59:59").unwrap();
一旦你有了 FmtUtc2k
,你可以用以下方式将其转换为字符串
use utc2k::{FmtUtc2k, Utc2k};
use std::borrow::Borrow;
let fmt = FmtUtc2k::from(4_102_444_799_u32);
let s: &str = &fmt;
let s: &str = fmt.as_ref();
let s: &str = fmt.as_str();
let s: &str = fmt.borrow();
可选功能
local
:启用LocalOffset
结构体。请参阅文档以了解重要的注意事项和限制。serde
:启用序列化/反序列化支持。
安装
将 utc2k
添加到你的 dependencies
中,例如 Cargo.toml
,如下所示
[dependencies]
utc2k = "0.9.*"
许可证
版权 © 2024 Blobfolio, LLC <[email protected]>
本作品是免费的。你可以在 Do What The Fuck You Want To Public License,版本 2 的条款下重新分发它或修改它。
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
Version 2, December 2004
Copyright (C) 2004 Sam Hocevar <sam@hocevar.net>
Everyone is permitted to copy and distribute verbatim or modified
copies of this license document, and changing it is allowed as long
as the name is changed.
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. You just DO WHAT THE FUCK YOU WANT TO.
依赖项
~225KB