最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

介紹

        Rust的時(shí)間操作主要用到chrono庫(kù),接下來(lái)我將簡(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)文章

  • 使用systemd部署r-nacos的操作方法

    使用systemd部署r-nacos的操作方法

    r-nacos是一個(gè)用rust實(shí)現(xiàn)的nacos服務(wù),我們用它平替java?nacos以降低服務(wù)占用內(nèi)存,提升服務(wù)的穩(wěn)定性,這篇文章主要介紹了使用systemd部署r-nacos,需要的朋友可以參考下
    2024-03-03
  • 在Rust中編寫(xiě)自定義Error的詳細(xì)代碼

    在Rust中編寫(xiě)自定義Error的詳細(xì)代碼

    Result<T, E> 類(lèi)型可以方便地用于錯(cuò)誤傳導(dǎo),Result<T, E>是模板類(lèi)型,實(shí)例化后可以是各種類(lèi)型,但 Rust 要求傳導(dǎo)的 Result 中的 E 是相同類(lèi)型的,所以我們需要編寫(xiě)自己的 Error 類(lèi)型,本文給大家介紹了在Rust中編寫(xiě)自定義Error的詳細(xì)代碼,需要的朋友可以參考下
    2024-01-01
  • 深入探究在Rust中函數(shù)、方法和關(guān)聯(lián)函數(shù)有什么區(qū)別

    深入探究在Rust中函數(shù)、方法和關(guān)聯(lián)函數(shù)有什么區(qū)別

    在 Rust 中,函數(shù)、方法和關(guān)聯(lián)函數(shù)都是用來(lái)封裝行為的,它們之間的區(qū)別主要在于它們的定義和調(diào)用方式,本文將通過(guò)一個(gè)簡(jiǎn)單的rust代碼示例來(lái)給大家講講Rust中函數(shù)、方法和關(guān)聯(lián)函數(shù)區(qū)別,需要的朋友可以參考下
    2023-08-08
  • Rust使用Sled添加高性能嵌入式數(shù)據(jù)庫(kù)

    Rust使用Sled添加高性能嵌入式數(shù)據(jù)庫(kù)

    這篇文章主要為大家詳細(xì)介紹了如何在Rust項(xiàng)目中使用Sled庫(kù),一個(gè)為Rust生態(tài)設(shè)計(jì)的現(xiàn)代、高性能嵌入式數(shù)據(jù)庫(kù),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-03-03
  • 如何使用rust實(shí)現(xiàn)簡(jiǎn)單的單鏈表

    如何使用rust實(shí)現(xiàn)簡(jiǎn)單的單鏈表

    實(shí)現(xiàn)單鏈表在別的語(yǔ)言里面可能是一件簡(jiǎn)單的事情,單對(duì)于Rust來(lái)說(shuō),絕對(duì)不簡(jiǎn)單,下面這篇文章主要給大家介紹了關(guān)于如何使用rust實(shí)現(xiàn)簡(jiǎn)單的單鏈表的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-03-03
  • Rust中的Box<T>之堆上的數(shù)據(jù)與遞歸類(lèi)型詳解

    Rust中的Box<T>之堆上的數(shù)據(jù)與遞歸類(lèi)型詳解

    本文介紹了Rust中的Box<T>類(lèi)型,包括其在堆與棧之間的內(nèi)存分配,性能優(yōu)勢(shì),以及如何利用Box<T>來(lái)實(shí)現(xiàn)遞歸類(lèi)型和處理大小未知類(lèi)型,通過(guò)Box<T>,Rust程序員可以更靈活地管理內(nèi)存,避免編譯時(shí)大小不確定的問(wèn)題,并提高代碼的效率和靈活性
    2025-02-02
  • Rust語(yǔ)言的新手了解和學(xué)習(xí)入門(mén)啟蒙教程

    Rust語(yǔ)言的新手了解和學(xué)習(xí)入門(mén)啟蒙教程

    這篇文章主要介紹了rust的特點(diǎn)、安裝、項(xiàng)目結(jié)構(gòu)、IDE環(huán)境配置、代碼運(yùn)行,講解了如何安裝Rust編譯器,創(chuàng)建和運(yùn)行第一個(gè)Rust程序,并對(duì)Rust語(yǔ)言的特點(diǎn)和優(yōu)勢(shì)作了說(shuō)明,包括內(nèi)存安全、高效性能、并發(fā)性、社區(qū)支持和統(tǒng)一包管理等,是新手了解和學(xué)習(xí)Rust語(yǔ)言的啟蒙教程
    2024-12-12
  • Rust應(yīng)用調(diào)用C語(yǔ)言動(dòng)態(tài)庫(kù)的操作方法

    Rust應(yīng)用調(diào)用C語(yǔ)言動(dòng)態(tài)庫(kù)的操作方法

    這篇文章主要介紹了Rust應(yīng)用調(diào)用C語(yǔ)言動(dòng)態(tài)庫(kù),本文記錄了筆者編寫(xiě)一個(gè)簡(jiǎn)單的C語(yǔ)言動(dòng)態(tài)庫(kù),并通過(guò)Rust調(diào)用動(dòng)態(tài)庫(kù)導(dǎo)出的函數(shù),需要的朋友可以參考下
    2023-01-01
  • Rust語(yǔ)言之使用Polar權(quán)限管理方法詳解

    Rust語(yǔ)言之使用Polar權(quán)限管理方法詳解

    權(quán)限管理 (Permission Management) 是一個(gè)涵蓋了系統(tǒng)或網(wǎng)絡(luò)中用戶權(quán)限控制和管理的系統(tǒng),本文將詳細(xì)給大家介紹Rust語(yǔ)言中如何使用Polar權(quán)限管理,需要的朋友可以參考下
    2023-11-11
  • Rust指南枚舉類(lèi)與模式匹配詳解

    Rust指南枚舉類(lèi)與模式匹配詳解

    這篇文章主要介紹了Rust指南枚舉類(lèi)與模式匹配精講,枚舉允許我們列舉所有可能的值來(lái)定義一個(gè)類(lèi)型,枚舉中的值也叫變體,今天通過(guò)一個(gè)例子給大家詳細(xì)講解,需要的朋友可以參考下
    2022-09-09

最新評(píng)論

江永县| 明水县| 通渭县| 栾川县| 温州市| 中江县| 崇礼县| 富川| 额敏县| 甘孜| 剑河县| 广元市| 长岛县| 阳新县| 醴陵市| 和林格尔县| 昌乐县| 大兴区| 观塘区| 大石桥市| 自贡市| 辉南县| 若羌县| 泗阳县| 乌审旗| 利川市| 云龙县| 福建省| 塔城市| 霍林郭勒市| 本溪| 阳山县| 梨树县| 广昌县| 油尖旺区| 海盐县| 会泽县| 永年县| 广灵县| 长乐市| 合江县|