SystemTime
获取时间对应的秒/毫秒/微秒/纳秒
use std::time::{UNIX_EPOCH, SystemTime};
fn main() {
let now = SystemTime::now().duration_since(UNIX_EPOCH).unwrap();
let time = now.as_secs();
let time = now.as_millis();
let time = now.as_micros();
let time = now.as_nanos();
}
将秒数转换为 SystemTime
use std::{time::{Duration, SystemTime, UNIX_EPOCH}, ops::Add};
fn main() {
let d = Duration::new(1655955710, 520000000);
let st = SystemTime::from(UNIX_EPOCH.add(d));
// st: SystemTime { tv_sec: 1655955710, tv_nsec: 520000000 }
println!("st: {:?}", st);
}
chrono
获取时间对应的秒/毫秒/纳秒
use chrono::Local;
fn main() {
let now = Local::now();
let time = now.timestamp();
let time = now.timestamp_millis();
let time = now.timestamp_nanos();
}
格式化和解析
use chrono::{Local, NaiveDateTime};
fn main() {
// 将日期格式化为字符串
let fmt = "%Y-%m-%d %H:%M:%S";
let date_str = Local::now().format(fmt).to_string();
// date: 2022-01-10 21:33:42
println!("date: {}", date_str);
// 将字符串解析为日期
let date = NaiveDateTime::parse_from_str(date_str.as_str(), fmt).unwrap();
// date: 2022-01-10 21:33:42
println!("date: {}", date);
}
毫秒和日期的互转
use chrono::prelude::*;
fn main() {
// 将日期转换为毫秒
let time = Local::now().timestamp_millis();
// time: 1641822207280
println!("time: {}", time);
// 将毫秒转换为日期
let date = Local.timestamp_millis(time);
// date: 2022-01-10 21:43:27.280 +08:00
println!("date: {}", date);
}
日期的加减
use std::ops::{Add, Sub};
use chrono::{Local, Duration};
fn main() {
let now = Local::now().naive_local();
// 加一个小时
let next = now.add(Duration::minutes(60));
// now: 2022-01-10 21:52:09.019770200
println!("now: {}", now);
/// next: 2022-01-10 22:52:09.019770200
println!("next: {}", next);
// 比较大小
if now <= next {
println!("now <= next");
}
let now = Local::now().naive_local();
// 减一天
let pre = now.sub(Duration::days(1));
// now: 2022-01-10 21:54:52.772779300
println!("now: {}", now);
// pre: 2022-01-09 21:54:52.772779300
println!("pre: {}", pre);
let sub = now.sub(pre).num_days();
// sub: 1
println!("sub: {}", sub);
// 比较大小
if now >= pre {
println!("now >= pre");
}
}
获取年月日时分秒
use chrono::{Local, Datelike, Timelike};
fn main() {
let now = Local::now();
// let now = Local::now().naive_local();
// now: 2022-01-11 18:36:10.224207
println!("now: {}", now);
// year: 2022
println!("year: {}", now.year());
// month: 1
println!("month: {}", now.month());
// day: 11
println!("day: {}", now.day());
// hour: 18
println!("hour: {}", now.hour());
// minute: 36
println!("minute: {}", now.minute());
// second: 10
println!("second: {}", now.second());
}