Skip to content

Latest commit

 

History

History
50 lines (37 loc) · 2.59 KB

string.zh.md

File metadata and controls

50 lines (37 loc) · 2.59 KB

将字符串解析为 datetime 结构

[![chrono-badge]][chrono] [![cat-date-and-time-badge]][cat-date-and-time]

解析已知的字符串表达格式RFC 2822RFC 3339和自定义格式,将其变为一个DateTime结构,可以分别使用DateTime::parse_from_rfc2822DateTime::parse_from_rfc3339DateTime::parse_from_str

可以在chrono::format::strftime找到,转义序列,让其可用于DateTime::format。 请注意DateTime::parse_from_str要求一个 DateTime 结构,必须是创建的,唯一标识的日期和时间。请使用NaiveDateNaiveTimeNaiveDateTime,分析没有时区的日期和时间。

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