欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Rust日期與時(shí)間的操作方法

 更新時(shí)間:2023年09月28日 14:48:25   作者:小殊小殊  
Rust的時(shí)間操作主要用到chrono庫(kù),接下來我將簡(jiǎn)單選一些常用的操作進(jìn)行介紹,感興趣的朋友跟隨小編一起看看吧

介紹

        Rust的時(shí)間操作主要用到chrono庫(kù),接下來我將簡(jiǎn)單選一些常用的操作進(jìn)行介紹,如果想了解更多細(xì)節(jié),請(qǐng)查看官方文檔。

        官方文檔:chrono - Rust

        Cargo.toml引用:chrono = { version = "0.4", features = ["serde"] }

一、計(jì)算耗時(shí)

        Rust標(biāo)準(zhǔn)庫(kù),一般用于計(jì)算變量start和duration之間的程序運(yùn)行時(shí)間,代碼如下:

use std::time::{Duration, Instant};
use std::thread;
fn expensive_function(seconds:u64) {
    thread::sleep(Duration::from_secs(seconds));
}
fn main() {
    cost();
}
fn cost(){
    let start = Instant::now();
    expensive_function(2);
    let duration = start.elapsed();
    println!("耗時(shí): {:?}", duration);
}

二、時(shí)間加減法

        使用到chrono庫(kù)的checked_add_signed方法,如果無(wú)法計(jì)算出日期和時(shí)間,方法將返回 None。比如當(dāng)前時(shí)間加一天、加兩周、加3小時(shí)再減4秒,代碼如下:

use chrono::{Duration, Local};
fn main() {
    // 獲取當(dāng)前時(shí)間
    let now = Local::now();
    println!("{}", now);
    let almost_three_weeks_from_now = now.checked_add_signed(Duration::days(1))
            .and_then(|in_2weeks| in_2weeks.checked_add_signed(Duration::weeks(2)))
            .and_then(|in_2weeks| in_2weeks.checked_add_signed(Duration::hours(3)))
            .and_then(|in_2weeks| in_2weeks.checked_add_signed(Duration::seconds(-4)))
            ;
    match almost_three_weeks_from_now {
        Some(x) => println!("{}", x),
        None => eprintln!("時(shí)間超出范圍"),
    }
    match now.checked_add_signed(Duration::max_value()) {
        Some(x) => println!("{}", x),
        None => eprintln!("時(shí)間超出范圍,不能計(jì)算出太陽(yáng)系繞銀河系中心一周以上的時(shí)間."),
    }
}

三、時(shí)區(qū)轉(zhuǎn)換

        使用 chrono庫(kù)的DateTime::from_naive_utc_and_offset 方法將本地時(shí)間轉(zhuǎn)換為 UTC 標(biāo)準(zhǔn)格式。然后使用 offset::FixedOffset 結(jié)構(gòu)體,將 UTC 時(shí)間轉(zhuǎn)換為 UTC+8 和 UTC-2。

use chrono::{DateTime, FixedOffset, Local, Utc};
fn main() {
    let local_time = Local::now();
    let utc_time = DateTime::<Utc>::from_naive_utc_and_offset(local_time.naive_utc(), Utc);
    let china_timezone = FixedOffset::east_opt(8 * 3600);
    let rio_timezone = FixedOffset::west_opt(2 * 3600);
    println!("本地時(shí)間: {}", local_time);
    println!("UTC時(shí)間: {}", utc_time);
    println!(
        "北京時(shí)間: {}",
        utc_time.with_timezone(&china_timezone.unwrap())
    );
    println!("里約熱內(nèi)盧時(shí)間: {}", utc_time.with_timezone(&rio_timezone.unwrap()));
}

四、年月日時(shí)分秒

        獲取當(dāng)前時(shí)間年月日、星期、時(shí)分秒,使用chrono庫(kù):

use chrono::{Datelike, Timelike, Local};
fn main() {
    let now = Local::now();
    let (is_common_era, year) = now.year_ce();
    println!(
        "當(dāng)前年月日: {}-{:02}-{:02} {:?} ({})",
        year,
        now.month(),
        now.day(),
        now.weekday(),
        if is_common_era { "CE" } else { "BCE" }
    );
    let (is_pm, hour) = now.hour12();
    println!(
        "當(dāng)前時(shí)分秒: {:02}:{:02}:{:02} {}",
        hour,
        now.minute(),
        now.second(),
        if is_pm { "PM" } else { "AM" }
    );
}

五、時(shí)間格式化

        時(shí)間格式化會(huì)用到chrono庫(kù),用format方法進(jìn)行時(shí)間格式化;NaiveDateTime::parse_from_str方法進(jìn)行字符串轉(zhuǎn)DateTime,代碼如下:

use chrono::{DateTime, Local, ParseError, NaiveDateTime};
fn main() -> Result<(), ParseError>{
    let now: DateTime<Local> = Local::now();
    // 時(shí)間格式化
    let ymdhms =  now.format("%Y-%m-%d %H:%M:%S%.3f");
    // 字符串轉(zhuǎn)時(shí)間
    let no_timezone = NaiveDateTime::parse_from_str("2015-09-05 23:56:04.800", "%Y-%m-%d %H:%M:%S%.3f")?;
    println!("當(dāng)前時(shí)間: {}", now);
    println!("時(shí)間格式化: {}", ymdhms);
    println!("字符串轉(zhuǎn)時(shí)間: {}", no_timezone);
    Ok(())
}

        Rust的時(shí)間與日期操作就簡(jiǎn)單介紹到這里,關(guān)注不迷路(*^▽^*)

到此這篇關(guān)于Rust操作日期與時(shí)間的文章就介紹到這了,更多相關(guān)Rust日期與時(shí)間內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Rust并發(fā)編程之使用消息傳遞進(jìn)行線程間數(shù)據(jù)共享方式

    Rust并發(fā)編程之使用消息傳遞進(jìn)行線程間數(shù)據(jù)共享方式

    文章介紹了Rust中的通道(channel)概念,包括通道的基本概念、創(chuàng)建并使用通道、通道與所有權(quán)、發(fā)送多個(gè)消息以及多發(fā)送端,通道提供了一種線程間安全的通信機(jī)制,通過所有權(quán)規(guī)則確保數(shù)據(jù)安全,并且支持多生產(chǎn)者單消費(fèi)者架構(gòu)
    2025-02-02
  • Rust 多線程編程的實(shí)現(xiàn)

    Rust 多線程編程的實(shí)現(xiàn)

    在rust中,多線程編程不算困難,但是也需要留心和別的編程語(yǔ)言中不同的地方,本文主要介紹了Rust 多線程編程的實(shí)現(xiàn),感興趣的可以了解一下
    2023-12-12
  • Rust中Cargo的使用詳解

    Rust中Cargo的使用詳解

    Cargo 是 Rust 的構(gòu)建系統(tǒng)和包管理器,?多數(shù) Rustacean 們使? Cargo 來管理他們的 Rust 項(xiàng)?,因?yàn)樗梢詾槟闾幚砗芏嗳蝿?wù),?如構(gòu)建代碼、下載依賴庫(kù)并編譯這些庫(kù),這篇文章主要介紹了Rust中Cargo的使用,需要的朋友可以參考下
    2022-11-11
  • 如何使用Rust的向量存儲(chǔ)值列表

    如何使用Rust的向量存儲(chǔ)值列表

    本文介紹了在Rust中使用向量存儲(chǔ)值列表的方法,包括創(chuàng)建、更新、讀取、遍歷、存儲(chǔ)多種類型以及內(nèi)存釋放等方面,向量是Rust中常用且強(qiáng)大的集合類型,熟練掌握其用法有助于編寫高效且安全的代碼
    2025-02-02
  • Rust中GUI庫(kù)egui的簡(jiǎn)單應(yīng)用指南

    Rust中GUI庫(kù)egui的簡(jiǎn)單應(yīng)用指南

    egui(發(fā)音為“e-gooey”)是一個(gè)簡(jiǎn)單、快速且高度可移植的 Rust 即時(shí)模式 GUI 庫(kù),跨平臺(tái)、Rust原生,適合一些小工具和游戲引擎GUI,下面就跟隨小編一起來看看它的具體使用吧
    2024-03-03
  • Rust中的&和ref使用解讀

    Rust中的&和ref使用解讀

    在Rust中,`&`和`ref`都可以用來定義指針,但它們的使用位置不同,`&`通常放在等號(hào)右邊,而`ref`放在左邊,`&`主要用于函數(shù)參數(shù)和模式匹配中,而`ref`主要用于模式匹配中,Rust通過`&`和`ref`提供了靈活的指針操作,使得代碼更加安全和高效
    2025-02-02
  • Rust文件 launch.json作用大全

    Rust文件 launch.json作用大全

    launch.json 是 Visual Studio Code(VSCode)中的一個(gè)配置文件,主要用于配置調(diào)試器,本文給大家介紹Rust文件 launch.json 有什么用,感興趣的朋友跟隨小編一起看看吧
    2024-05-05
  • 最新評(píng)論