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());
} 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"));
} // 需依赖 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::{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());
} // 需依赖 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());
}