如何将字符串转换为chrono::DateTime或chrono::NaiveDateTime
ParseError(NotEnough)或ParseError(TooShort)是什么意思?
如何将字符串转换为chrono::DateTime或chrono::NaiveDateTime
ParseError(NotEnough)或ParseError(TooShort)是什么意思?
将字符串转换为Chrono对象时,必须知道字符串的输入格式包含哪些部分
当没有足够的信息来填充整个对象时,就会显示ParseError(NotEnough).例如,缺少日期、时间或时区
字符串格式规范,例如"%Y-%m-%d %H:%M:%S"
:https://docs.rs/chrono/latest/chrono/format/strftime/index.html
要转换RFC2822字符串,请使用parse_from_rfc2822(..)函数.
let date_str = "Tue, 1 Jul 2003 10:52:37 +0200";
let datetime = 日期时间::parse_from_rfc2822(date_str).unwrap();
要转换RFC3339 or ISO 8601字符串,请使用parse_from_rfc3339(..)函数.
let date_str = "2020-04-12T22:10:57+02:00";
// convert the string into 日期时间<FixedOffset>
let datetime = 日期时间::parse_from_rfc3339(date_str).unwrap();
// convert the string into 日期时间<Utc> or other timezone
let datetime_utc = datetime.with_timezone(&Utc);
要转换其他日期时间字符串,请使用parse_from_str(..)函数.
let date_str = "2020-04-12 22:10:57 +02:00";
let datetime = 日期时间::parse_from_str(date_str, "%Y-%m-%d %H:%M:%S %z").unwrap();
当你没有时区时,你需要使用Naive日期时间.此对象不存储时区:
let date_str = "2020-04-12 22:10:57";
let naive_datetime = Naive日期时间::parse_from_str(date_str, "%Y-%m-%d %H:%M:%S").unwrap();
如果我们解析一个日期(没有时间),我们可以将它存储在一个Naive日期.此对象不存储时间或时区:
let date_str = "2020-04-12";
let naive_date = Naive日期::parse_from_str(date_str, "%Y-%m-%d").unwrap();
如果我们解析一个时间(没有日期),我们可以将其存储在Naive时间中.此对象不存储日期或时区:
let time_str = "22:10:57";
let naive_time = Naive时间::parse_from_str(time_str, "%H:%M:%S").unwrap();
如果我们有一些字符串,并想添加更多信息,我们可以更改类型.但你必须自己提供这些信息.
let date_str = "2020-04-12";
// From string to a Naive日期
let naive_date = Naive日期::parse_from_str(date_str, "%Y-%m-%d").unwrap();
// Add some default time to convert it into a Naive日期时间
let naive_datetime: Naive日期时间 = naive_date.and_hms(0,0,0);
// Add a timezone to the object to convert it into a 日期时间<UTC>
let datetime_utc = 日期时间::<Utc>::from_utc(naive_datetime, Utc);