簡體   English   中英

使用 Chrono 時 BadFormat 將字符串解析為日期

[英]BadFormat parsing string to date when using Chrono

我正在嘗試使用 Chrono 庫將字符串轉換為日期。 我總是收到BadFormatNotEnough錯誤:

extern crate chrono;

use chrono::prelude::*;

fn main() {
    let dt1 = DateTime::parse_from_str(
        "2017-08-30 18:34:06.638997932 UTC", 
        "%Y-%m-%d %H:%M:%S.%9f"
    );
    println!("{:?}", dt1);
}

我不確定我做錯了什么。

  1. 如評論中所述,您的格式字符串不允許使用字符串的" UTC"部分。 這就是您收到BadFormat錯誤的原因。

  2. 如果您在格式字符串中添加" UTC" ,您仍然會收到BadFormat錯誤,因為您輸入了.%9f ,而它應該是%.9f

  3. 一旦你解決了這個問題,你會得到一個NotEnough錯誤,因為我們實際上並沒有解析時區。

我會使用NaiveDateTime始終以 UTC 解析,然后將" UTC"添加到格式字符串中以忽略它,更正錯字:

use chrono::prelude::*; // 0.4.9

fn main() {
    let dt1 = NaiveDateTime::parse_from_str(
        "2017-08-30 18:34:06.638997932 UTC",
        "%Y-%m-%d %H:%M:%S%.9f UTC",
    );

    println!("{:?}", dt1); // Ok(2017-08-30T18:34:06.638997932)
}

暫無
暫無

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

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