rust里的时间控制

rust其实没有自带的time包,需要引入第三方,这里是0.3最新版本描述

首先,在Cargo.toml里加入

  time = { version = "0.3", features=["parsing", "formatting", "macros", "local-offset"]}
  • parsing和formatting是用来格式化的
  • local-offset是用来获取当前时间

然后:

创建日期

    let date = Date::from_calendar_date(2024, Month::July, 31).unwrap();

结果

2024-07-31

创建时间

    let time = Time::from_hms(14, 30, 0).unwrap();

结果

14:30:00.0

创建完整的 DateTime

    let datetime = PrimitiveDateTime::new(date, time);

结果

2024-07-31 14:30:00.0

日期时间运算

    let later = datetime + Duration::days(7);
    let earlier = datetime - Duration::hours(12);
    let diff = later - earlier;

结果

later 2024-08-07 14:30:00.0
earlier 2024-07-31 2:30:00.0
diff 648000

时间间隔 Duration

    let ten_minutes = Duration::minutes(10);
    let gigasecond = Duration::seconds(1_000_000_000);

结果

10 分钟: Duration { seconds: 600, nanoseconds: 0 }
10 亿秒: Duration { seconds: 1000000000, nanoseconds: 0 }

当前时间(本地 / UTC)

    let now = OffsetDateTime::now_local().unwrap(); // 当前本地时间
    let utc_now = OffsetDateTime::now_utc(); // 当前 UTC 时间
    let time_only = now.time(); // 得到 time::Time 类型

结果

当前时间: 2025-07-31 21:20:34.9443346 +08:00:00
当前 UTC 时间: 2025-07-31 13:20:34.9443671 +00:00:00
现在的时间: 21:20:34.9443346

从字符串转行

    let date_str = "2025-07-31 14:30:00";
    let datetime = PrimitiveDateTime::parse(
        date_str,
        &time::macros::format_description!("[year]-[month]-[day] [hour]:[minute]:[second]"),
    )
    .unwrap();

结果

2025-07-31 14:30:00.0

转化成字符串

    let datetime_str = datetime
        .format(&time::macros::format_description!(
            "[year]-[month]-[day] [hour]:[minute]:[second]"
        ))
        .unwrap();

结果

 "2025-07-31 14:30:00"
posted @ 2025-07-31 21:23  fengyujia  阅读(35)  评论(0)    收藏  举报