2017-08-30 21 views
0

我想使用Chrono庫將字符串轉換爲日期。我總是得到BadFormatNotEnough錯誤:當使用Chrono時BadFormat解析字符串date

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); 
} 

我不知道我做錯了。

+2

格式字符串缺少時區符 – neuhaus

回答

1
  1. 正如評論中所述,您的格式字符串不允許您的字符串的" UTC"部分。這就是爲什麼你會得到BadFormat錯誤。

  2. 如果添加" UTC"到您的格式字符串,你仍然可以獲得一個BadFormat錯誤,因爲你已經輸入.%9f當它應該是%.9f

  3. 修復該問題後,您會收到NotEnough錯誤,因爲我們實際上並沒有解析時區。

我會使用NaiveDateTime總是在UTC解析,然後添加到" UTC"格式字符串忽略它,糾正錯字:

extern crate chrono; 

use chrono::prelude::*; 

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) 
}