返回首页

Rust 时间戳:获取、转换与运算的代码示例

Rust 借助 chrono 库操作 Unix 时间戳的示例,涵盖获取当前时间戳、时间戳转日期、日期转时间戳以及时间运算。下面按常见场景整理了 Rust 的 4 段示例代码,直接复制即可使用。

获取时间戳

获取当前时刻的 Unix 时间戳,区分秒级与毫秒级两种精度。

use std::time::{SystemTime, UNIX_EPOCH};

fn main() {
    let now = SystemTime::now()
        .duration_since(UNIX_EPOCH)
        .unwrap();
    // 秒 / 毫秒
    println!("{} {}", now.as_secs(), now.as_millis());
}

时间戳转日期

将 Unix 时间戳还原为人类可读的日期时间字符串,可自定义格式。

// 需依赖 chrono = "0.4"
use chrono::{DateTime, Local, TimeZone};

fn main() {
    let ts = 1690000000;
    let dt: DateTime<Local> = Local.timestamp_opt(ts, 0).unwrap();
    println!("{}", dt.format("%Y-%m-%d %H:%M:%S"));
}

日期转时间戳

把指定的日期时间转换为 Unix 时间戳,常用于存储与时间计算。

// 需依赖 chrono = "0.4"
use chrono::{NaiveDateTime, Local, TimeZone};

fn main() {
    let dt = NaiveDateTime::parse_from_str(
        "2023-07-22 06:26:40", "%Y-%m-%d %H:%M:%S").unwrap();
    let ts = Local.from_local_datetime(&dt).unwrap().timestamp();
    println!("{}", ts);
}

时间戳运算

基于时间戳做加减(如加一天),用于到期、倒计时等时间推算。

// 需依赖 chrono = "0.4"
use chrono::{Duration, Local, TimeZone};

fn main() {
    let ts = 1690000000;
    let dt = Local.timestamp_opt(ts, 0).unwrap()
        + Duration::days(1);
    println!("{}", dt.timestamp());
}

相关工具