[![chrono-badge]][chrono] [![cat-date-and-time-badge]][cat-date-and-time]
解析已知的字符串表达格式RFC 2822,RFC 3339和自定义格式,将其变为一个DateTime
结构,可以分别使用DateTime::parse_from_rfc2822
,DateTime::parse_from_rfc3339
和DateTime::parse_from_str
。
可以在chrono::format::strftime
找到,转义序列,让其可用于DateTime::format
。 请注意DateTime::parse_from_str
要求一个 DateTime 结构,必须是创建的,唯一标识的日期和时间。请使用NaiveDate
,NaiveTime
和NaiveDateTime
,分析没有时区的日期和时间。
extern crate chrono;
use chrono::{DateTime, NaiveDate, NaiveDateTime, NaiveTime};
use chrono::format::ParseError;
fn main() -> Result<(), ParseError> {
let rfc2822 = DateTime::parse_from_rfc2822("Tue, 1 Jul 2003 10:52:37 +0200")?;
println!("{}", rfc2822);
let rfc3339 = DateTime::parse_from_rfc3339("1996-12-19T16:39:57-08:00")?;
println!("{}", rfc3339);
let custom = DateTime::parse_from_str("5.8.1994 8:00 am +0000", "%d.%m.%Y %H:%M %P %z")?;
println!("{}", custom);
let time_only = NaiveTime::parse_from_str("23:56:04", "%H:%M:%S")?;
println!("{}", time_only);
let date_only = NaiveDate::parse_from_str("2015-09-05", "%Y-%m-%d")?;
println!("{}", date_only);
let no_timezone = NaiveDateTime::parse_from_str("2015-09-05 23:56:04", "%Y-%m-%d %H:%M:%S")?;
println!("{}", no_timezone);
Ok(())
}