如何将 PostgreSQL timestamp
(带时区)转换为 Rust Chrono DateTime<Utc>
?
例子:2020-04-12 22:10:57.0+02
如何将 PostgreSQL timestamp
(带时区)转换为 Rust Chrono DateTime<Utc>
?
例子:2020-04-12 22:10:57.0+02
您必须使用以下自定义解析器str
:
let date_str = "2020-04-12 22:10:57.000+02";
// convert the string into DateTime<FixedOffset>
let datetime = DateTime::parse_from_str(&date_str, "%Y-%m-%d %H:%M:%S%.f%#z").unwrap();
// convert the string into DateTime<Utc> or other timezone
let datetime_utc = datetime.with_timezone(&Utc);
额外信息:
%.f
=> .026490
:类似于.%f
但左对齐。这些都消耗前导点。%#z
=> +09
:仅解析:相同%z
但允许缺少或存在分钟。有关详细信息,请参阅此 awnser。
Postgres 类型TIMESTAMP
只能转换为 chrono 的NaiveDateTime
.
为了转换为 chrono's DateTime<Utc>
,您必须TIMESTAMP WITH TIME ZONE
为您的列使用 Postgres 类型。