簡體   English   中英

在計時 DateTime 實例中更新年份

[英]update year in a chrono DateTime instance

如何更改DateTime<FixedOffset>實例中的年份(來自 rust crate chrono )?
也就是說,創建一個DateTime<FixedOffset>的新實例,它從舊實例中復制月份和日期。

換句話說,我將如何完成以下代碼:

fn datetime_set_year(
  datetime: &DateTime<FixedOffset>,
  year: &i32
) -> DateTime<FixedOffset>

代碼可以忽略像閏日這樣的例外情況(如果可能的話)。

傳遞的DateTime<FixedOffset>實例被分解為Date<FixedOffset>實例和NaiveTime實例。 然后FixedOffset.ymd.and_time使用傳遞的year創建一個新的DateTime<FixedOffset>實例。

Rust游樂場

fn datetime_with_year(datetime: &DateTime<FixedOffset>, year: i32) -> DateTime<FixedOffset> {
    let date: Date<FixedOffset> = datetime.date();
    let time: NaiveTime = datetime.time();
    let fixedoffset: &FixedOffset = datetime.offset();
    match fixedoffset.ymd(year, date.month(), date.day()).and_time(time) {
        Some(datetime_) => {
            eprintln!("fixedoffset.ymd() Some {:?}", datetime_);
            datetime_
        }
        None => {
            eprintln!("fixedoffset.ymd() None");
            datetime.clone()
        }
    }
}

更新:或按照@Jmb 的建議使用datetime.with_year(year)

呵呵😑

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM