chrono for Rust: 完整指南与示例

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

chrono 库 for Rust:日期和时间处理完整指南

\n\n

1. 这是什么以及为什么需要它

\n\n

chrono 库是 Rust 生态系统中处理日期和时间的实际标准。它提供了一个强大、类型安全且符合人体工程学的 API,用于解析、格式化、算术运算和时间戳操作。与仅通过 std::time 提供基本功能(仅用于处理持续时间和系统时间)的 Rust 标准库不同,chrono 几乎涵盖了开发者的所有需求:从时区处理到复杂的日历计算。

\n\n

为什么需要它?如果您正在编写一个需要处理出生日期、以纳秒精度记录事件、构建日程安排或处理国际时区的应用程序,那么 chrono 是必不可少的。它支持 ISO 8601、RFC 2822、RFC 3339 格式,并允许您创建自定义格式化器。得益于 Rust 严格的类型系统,chrono 有助于避免与无效日期(例如 2 月 30 日)或 UTC 与本地时间混淆相关的错误。

\n\n

该库得到社区的积极维护,拥有出色的文档,并用于数千个项目,包括 tokio、actix-web 和 diesel 等知名项目。0.4.x 版本是稳定的,推荐用于生产环境。

\n\n

2. 安装

\n\n

要将 chrono 添加到您的 Rust 项目中,请使用 Cargo 包管理器。在项目的根目录下,在终端中执行:

\n\n
cargo add chrono
\n\n

或者,手动将依赖项添加到 Cargo.toml 文件中:

\n\n
[dependencies]\nchrono = "0.4"
\n\n

之后,执行 cargo build 以下载库及其依赖项。要使用时区功能(例如,解析城市名称),可能需要启用 serde 或 clock 特性:

\n\n
[dependencies]\nchrono = { version = "0.4", features = ["serde"] }
\n\n

3. 快速入门 — 最小工作示例

\n\n

创建一个 main.rs 文件并粘贴以下代码:

\n\n
use chrono::{Local, Utc, DateTime, Duration};\n\nfn main() {\n    // UTC 当前时间\n    let utc_now: DateTime = Utc::now();\n    println!("当前 UTC 时间: {}", utc_now);\n\n    // 当前本地时间\n    let local_now: DateTime = Local::now();\n    println!("当前本地时间: {}", local_now);\n\n    // 日期格式化\n    println!("格式化日期: {}", local_now.format("%Y-%m-%d %H:%M:%S"));\n\n    // 算术运算:加 2 天\n    let future = utc_now + Duration::days(2);\n    println!("2 天后 (UTC): {}", future);\n}
\n\n

使用命令 cargo run 运行程序。您将看到 UTC 当前时间、本地时间、格式化字符串以及两天后的日期。

\n\n

4. 主要方法/函数

\n\n

以下是 chrono 库中的 8 个关键方法和类型。每个都提供了签名、描述和代码示例。

\n\n

4.1. Utc::now()

\n

签名: pub fn now() -> DateTime<Utc>

\n

描述: 返回 UTC 时区的当前时刻。这是获取时间戳最安全的方式,因为它不依赖于系统的时区设置。

\n
use chrono::Utc;\n\nfn main() {\n    let now = Utc::now();\n    println!("当前 UTC 时间: {}", now);\n    // 输出: 2025-03-15 14:30:00.123456 UTC\n}
\n\n

4.2. Local::now()

\n

签名: pub fn now() -> DateTime<Local>

\n

描述: 返回当前本地时区的时刻。这对于显示给用户的时间很有用,但请注意,它依赖于系统的时区配置,可能因环境而异。

推荐