6 个版本
0.0.6 | 2024年5月6日 |
---|---|
0.0.5 | 2023年12月5日 |
0.0.4 | 2023年5月12日 |
0.0.3 | 2023年3月9日 |
0.0.2 | 2023年2月10日 |
#28 in 日期和时间
3,301 每月下载量
用于 16 个Crate (11 直接)
79KB
832 行
DateTime (DTT)
一个用于解析、验证、操作和格式化日期和时间的Rust库
是 Mini Functions 库系列的一部分。
• 网站 • 文档 • 报告错误 • 请求功能 • 贡献指南
概述 📖
DateTime (DTT)
库是一个全面且灵活的工具,使开发者能够轻松地管理日期和时间。它提供了一系列函数和数据结构,允许您轻松执行各种日期和时间操作,例如确定月份中的某一天、一天中的小时、处理 ISO 8601 日期和时间格式等。
该库支持使用 UTC 或自定义时区创建新的 DateTime
对象,确保您始终拥有准确和相关的日期和时间信息。此外,它还提供了一种验证输入日期和时间的机制,确保您始终拥有准确的信息来工作。
功能 ✨
DateTime (DTT)
结构体包含以下字段和方法
字段
功能 | 描述 | 类型 |
---|---|---|
day |
月份中的某一天:(1-31) | u8 |
hour |
一天中的小时:(0-23) | u8 |
iso_8601 |
ISO 8601 日期和时间:(例如 "2023-01-01T00:00:00+00:00") | String |
iso_week |
ISO 周数:(1-53) | u8 |
microsecond |
微秒:(0-999999) | u32 |
minute |
一小时中的分钟:(0-59) | u8 |
month |
月份:(例如 "January") | String |
now |
现在对象:(例如 "2023-01-01") | String |
offset |
从 UTC 的偏移:(例如 "+00:00") | String |
ordinal |
序数日期:(1-366) | u16 |
second |
一分钟中的秒:(0-59) | u8 |
time |
时间对象:(例如 "00:00:00") | String |
tz |
时区对象:(例如 "UTC") | String |
weekday |
星期对象:(例如 "Monday") | String |
年 |
年对象:(例如“2023”) | i32 |
方法
new()
:创建一个新的带有当前UTC时间的DateTime
对象。new_with_tz(tz: &str)
:创建一个新的指定时区的DateTime
对象。is_valid_day(input: &str)
:检查输入是否表示有效的月份中的某一天。is_valid_hour(input: &str)
:检查输入是否表示一天中的有效小时。is_valid_second(input: &str)
:检查输入是否表示分钟中的有效秒。is_valid_minute(input: &str)
:检查输入是否表示小时中的有效分钟。is_valid_month(input: &str)
:检查输入是否表示一年中的有效月份。is_valid_ordinal(input: &str)
:检查输入是否表示有效的序数日期。is_valid_time(input: &str)
:检查输入是否表示有效的时间。is_valid_iso_week(input: &str)
:检查输入是否表示有效的ISO周数。is_valid_iso_8601(input: &str)
:检查输入是否表示有效的ISO 8601日期和时间。is_valid_microsecond(input: &str)
:检查输入是否表示有效的微秒。update(&mut self)
:根据时区更新DateTime
对象为当前日期和时间。add_days(&self, days: i32)
:创建一个新的DateTime
对象,该对象包含指定的天数。next_day(&self)
:创建一个新的DateTime
对象,表示下一天。previous_day(&self)
: 创建一个表示前一天的新的DateTime
对象。relative_delta(&self)
: 创建一个新的DateTime
对象,其相对偏差基于当前日期和时间。format(&self, format_str: &str)
: 使用指定的格式将DateTime
对象格式化为字符串。
该库还提供了各种获取方法来提取 DateTime
对象的各个组成部分,例如 year()
、month()
、day()
、hour()
、minute()
、second()
、microsecond()
、weekday()
、ordinal()
、iso_8601()
、iso_week()
、time()
、tz()
和 offset()
。
此外,DateTime (DTT)
结构体实现了 FromStr
特性,允许将字符串解析为 DateTime
对象。
入门 🚀
使用 DateTime (DTT)
只需几分钟。
安装
要安装 DateTime (DTT)
,您需要在您的机器上安装 Rust 工具链。您可以通过遵循 Rust 网站的说明来安装 Rust 工具链。
一旦安装了 Rust 工具链,您可以使用以下命令安装 DateTime (DTT)
cargo install dtt
然后,您可以通过运行帮助命令来查看可用选项
dtt --help
要求
目前支持的最小 Rust 工具链版本是 Rust 1.60 或更高版本(稳定版)。建议您安装最新的稳定版 Rust。
平台支持
DateTime (DTT)
已在包括各种 Linux 发行版、macOS 和 Windows 在内的广泛平台上得到支持和测试。
文档
ℹ️ 信息:请访问我们的网站获取更多信息。您可以在 docs.rs、lib.rs 和 crates.io 上找到我们的文档。
使用 📖
要在您的项目中使用 DateTime (DTT)
库,请在您的 Cargo.toml
文件中添加以下内容
[dependencies]
dtt = "0.0.6"
在您的 main.rs
文件中添加以下内容
extern crate dtt;
use dtt::*;
然后您可以在应用程序代码中使用这些函数。
示例和测试用例
该库提供了几个示例和测试用例,以帮助您入门。您可以在项目的 examples
和 tests
目录中找到这些。
示例 1:创建一个新的 DateTime 对象并打印它
// Import the DateTime struct and the dtt_print macro
use dtt::DateTime;
use dtt::dtt_print;
#[test]
fn example_1() {
// Create a new DateTime object and print it
let now = DateTime::new();
dtt_print!(now);
}
示例 2:验证各种日期和时间组件的验证方法
// Import the DateTime struct and the validation macros
use dtt::DateTime;
use dtt::{
is_valid_day,
is_valid_hour,
is_valid_minute,
is_valid_month,
is_valid_second,
is_valid_microsecond,
is_valid_ordinal,
is_valid_time,
is_valid_iso_8601
};
// Validate microsecond values
assert!(DateTime::is_valid_microsecond("999999"));
assert!(!DateTime::is_valid_microsecond("1000000"));
// Validate second values
assert!(DateTime::is_valid_second("59"));
assert!(!DateTime::is_valid_second("60"));
// Validate minute values
assert!(DateTime::is_valid_minute("59"));
assert!(!DateTime::is_valid_minute("60"));
// Validate hour values
assert!(DateTime::is_valid_hour("23"));
assert!(!DateTime::is_valid_hour("24"));
// Validate month values
assert!(DateTime::is_valid_month("12"));
assert!(!DateTime::is_valid_month("13"));
// Validate year values
assert!(DateTime::is_valid_ordinal("366"));
assert!(!DateTime::is_valid_ordinal("367"));
// Validate time values
assert!(DateTime::is_valid_time("23:59:59"));
assert!(!DateTime::is_valid_time("24:00:00"));
// Validate ISO 8601 values
assert!(DateTime::is_valid_iso_8601("2023-05-11T17:30:00Z"));
assert!(DateTime::is_valid_iso_8601("2023-05-11T17:30:00+01:00"));
示例 3:验证字符串到 DateTime
的转换
use dtt::DateTime;
use std::str::FromStr;
let date_str = "2022-01-01T12:00:00+01:00";
let mut result: Result<DateTime, dtt::DateTimeError> = DateTime::from_str(date_str);
assert_eq!(result.as_mut().unwrap().iso_8601, date_str);
assert_eq!(result.as_mut().unwrap().year, 2022);
assert_eq!(result.as_mut().unwrap().month, "01");
assert_eq!(result.as_mut().unwrap().day, 1);
assert_eq!(result.as_mut().unwrap().hour, 12);
assert_eq!(result.as_mut().unwrap().minute, 0);
assert_eq!(result.as_mut().unwrap().second, 0);
assert_eq!(result.as_mut().unwrap().offset, "+01:00");
assert_eq!(result.as_mut().unwrap().time, "12:00:00");
assert_eq!(result.as_mut().unwrap().tz, "CET");
assert_eq!(result.as_mut().unwrap().iso_week, 52);
assert_eq!(result.as_mut().unwrap().weekday, "Saturday");
assert_eq!(result.as_mut().unwrap().ordinal, 1);
assert_eq!(result.as_mut().unwrap().microsecond, 0);
语义版本控制策略 🚥
为了使我们的发布周期透明,并努力保持向后兼容性,DateTime (DTT)
遵循 语义版本控制。
许可证 📝
本项目根据 MIT 许可证和 Apache 许可证(版本 2.0)的条款进行许可。
贡献 🤝
我们欢迎所有想要贡献的人。有关更多信息,请参阅贡献说明。
对本项目的任何形式的贡献(问题、拉取请求等)都必须遵守Rust 的行为准则。
除非您明确表示,否则您有意提交的任何贡献,根据 Apache-2.0 许可证的定义,将根据上述方式双重许可,不附加任何额外条款或条件。
故障排除
如果在使用 DateTime (DTT)
库时遇到任何问题,请检查以下内容
- 确保您已安装正确的 Rust 工具链,并且它满足最低版本要求。
- 验证您是否已正确将库添加到项目的依赖项中。
- 检查文档和示例,以了解您想要使用的特定功能。
- 如果问题仍然存在,请报告错误,以便项目维护者能够协助您。
致谢 💙
向所有DateTime (DTT) Library的杰出贡献者表示感谢,感谢他们的帮助和支持。
特别感谢Rust Reddit 社区,他们提供了大量有关如何改进此项目的有用建议。
依赖项
~3–5MB
~89K SLoC