datetime - BadFormat 在使用 Chrono 时将字符串解析为最新

标签 datetime rust

我正在尝试使用 Chrono 库将字符串转换为日期。我总是收到 BadFormatNotEnough 错误:

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

我不确定我做错了什么。

最佳答案

  1. 如评论中所述,您的格式字符串不允许字符串的 "UTC" 部分。这就是您收到 BadFormat 错误的原因。

  2. 如果您将 "UTC" 添加到格式字符串中,您仍然会收到 BadFormat 错误,因为您键入了 .%9f 当它应该是 %.9f.

  3. 修复该问题后,您会收到 NotEnough 错误,因为我们实际上并未解析时区。

我会使用 NaiveDateTime 始终以 UTC 格式进行解析,然后将 "UTC" 添加到格式字符串中以忽略它,更正拼写错误:

use chrono::prelude::*; // 0.4.9

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

关于datetime - BadFormat 在使用 Chrono 时将字符串解析为最新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45967902/

相关文章:

rust - 如何创建返回平面图的特征

python - 使用 pandas 和 numpy Python 格式化数据表日期时间值

php - 获取给定日期时间集的每月第一个星期一

Java 日期时间转换

c# - 如何将日期时间字符串转换为日期时间对象

c - 如何使用 inotify-rs 生成的 WatchDescriptor 结构将事件与生成它们的文件匹配?

rust - 将整数转换为 float 时如何添加正确的类型注释?

rust - 为什么我会收到错误 "the trait ` Iterator` is not implemented"以引用泛型类型,即使它实现了 IntoIterator?

c# - 如何释放 C# 中从 Rust 返回的字符串的内存?

mysql - 从 MySQL 中检索时间为 HH :MM format