Rust 时间

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());
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值