如何解析 ISO 8601 格式的日期?

2023-11-29

我需要解析RFC 3339字符串像"2008-09-03T20:56:35.450686Z"进入Python的datetime type.

我已经发现strptimePython标准库中有,但是不是很方便。

做这个的最好方式是什么?


isoparse函数来自python-dateutil

The python-dateutil包有dateutil.parser.isoparse不仅解析 RFC 3339 日期时间字符串(如问题中的字符串),还解析其他字符串ISO 8601不符合 RFC 3339 的日期和时间字符串(例如没有 UTC 偏移量的字符串,或仅表示日期的字符串)。

>>> import dateutil.parser
>>> dateutil.parser.isoparse('2008-09-03T20:56:35.450686Z') # RFC 3339 format
datetime.datetime(2008, 9, 3, 20, 56, 35, 450686, tzinfo=tzutc())
>>> dateutil.parser.isoparse('2008-09-03T20:56:35.450686') # ISO 8601 extended format
datetime.datetime(2008, 9, 3, 20, 56, 35, 450686)
>>> dateutil.parser.isoparse('20080903T205635.450686') # ISO 8601 basic format
datetime.datetime(2008, 9, 3, 20, 56, 35, 450686)
>>> dateutil.parser.isoparse('20080903') # ISO 8601 basic format, date only
datetime.datetime(2008, 9, 3, 0, 0)

The python-dateutil包里还有dateutil.parser.parse。和....相比isoparse,它可能不太严格,但是它们都非常宽容,并且会尝试解释您传入的字符串。如果您想消除任何误读的可能性,您需要使用比这两个函数更严格的函数。

与Python 3.7+内置的比较datetime.datetime.fromisoformat

dateutil.parser.isoparse是一个完整的 ISO-8601 格式解析器,但在 Python ≤ 3.10 中fromisoformat是故意的not。在Python 3.11中,fromisoformat支持有效 ISO 8601 中的几乎所有字符串。请参阅fromisoformat有关此警告的文档。 (看这个答案).

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何解析 ISO 8601 格式的日期? 的相关文章

随机推荐

  • 在 Python 中复制 Javascript 按位运算

    我正在尝试在 Python 中复制一个简单的按位 Javascript 操作 Javascript gt 0xA867Df55 2825379669 gt 0xA867Df55 0 1469587627 Python gt gt gt 0x
  • WP7 可以发送 HTML 邮件吗?

    WP7 可以发送 HTML 电子邮件吗 我可能忽略了它 但 EmailComposeTask 中似乎没有用于指定这一点的参数 尽管该设备能够接收和显示 HTML 电子邮件 EmailComposeTask不提供 API 来让您发送 HTML
  • openpyxl - 能够从图表中删除边框吗?

    使用 openpyxl 插入到我的工作表中的图表有边框 有没有办法通过 styles Style styles borders 模块将图表 饼图 条形图 的样式设置为没有边框 或者至少设置一个细白色边框 以便它们可以无边框打印 我在该对象上
  • 目前 Windows 上的 Git 存在哪些问题

    我想下载 msysgithere 它这样说 msysGit 项目没有足够的贡献者来提供商业级支持 如果您没有办法解决您的问题 可能有来自 msysGit 邮件列表的宝贵建议 或者吸引人们谁能解决它们 你的问题就不太可能得到解决 这听起来令人
  • 使用预编译的 Azure 函数库生成错误

    最近 我转换了一个使用 C 脚本的 Azure 函数 csx 到预编译的类库 使用适用于 Azure Functions 的 Visual Studio Studio 工具 它在 Visual Studio 2017 中成功构建 以及运行和
  • 重复,但仍然使用标准输出

    我可以施展一些魔法吗dup2 or fcntl 这样我将 stdout 重定向到一个文件 即 写入描述符 1 的任何内容都会转到一个文件 但是如果我使用其他机制 它会转到终端输出吗 如此松散 int original stdout some
  • 将字符串转换回枚举

    有没有更干净 更聪明的方法来做到这一点 我正在访问数据库来获取数据来填充对象 并将数据库字符串值转换回其枚举 我们可以假设数据库中的所有值确实是匹配枚举中的值 有问题的行是下面设置 EventLog ActionType 的行 我开始质疑我
  • 将 bytea 列转换为 OID,同时保留值

    我正在尝试改变一个bytea具有类型的列oid并仍然保留价值观 我尝试过使用如下查询 ALTER TABLE mytable ADD COLUMN mycol tmp oid UPDATE mytable SET mycol tmp CAS
  • JTextPane 格式化[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 我有一个 JTextPane 我想在其中添加行 并根据其内容使它们具有不同的格式
  • 为什么 Google Cloud SQL(使用 JDBC)从 Google App Engine 插入记录的时间比从我的个人计算机插入记录的时间长?

    我可以在 3 5 秒内从我的计算机插入 2000 条记录 GAE 需要 14 0 秒才能完成同样的事情 我看不到如何让 Google 驱动程序使用 rewriteBatchedStatements 设置 这是我的相关Java代码 packa
  • pack() 和 unpack() 在 Ruby 中如何工作

    在 Ruby 中为什么我们需要数组Packing 如何directive帮忙做这样的包装吗 我在控制台中运行了一些代码来查看指令在数组中的样子和方式 打包 但是每个指令的输出都非常相同 那么它们的核心有何不同 irb main 003 0
  • 如何更改play框架2.4.1的http端口?

    我来自 play 1 2 7 应用程序 目前正在开始使用 play 框架 2 4 1 和 scala 首先 我使用激活器 Web ui 来管理应用程序 但我无法让应用程序使用不同的 http 端口 我更改了conf application
  • 如何从另一个内容页面按钮单击打开主详细信息菜单?

    我想从另一个内容页面按钮单击事件打开主详细信息菜单 那么如何以 xamarin 形式做到这一点呢 您可以通过设置打开菜单页面MasterDetailPage IsPresented为真 简单的方法是MessagingCenter To Ma
  • 获取所有 Git 提交的列表,包括“丢失”的提交

    假设我有一个这样的图表 A B C D master E F HEAD If I do git log all oneline 我将得到所有六个提交 但如果图表是 A B C D master HEAD E F 我不会看到 E 和 F 我可
  • 为什么在“j”中计算比在“data.table”中使用“$”更快?

    也许这已经得到了回答 而我错过了 但很难搜索 一个非常简单的问题 为什么dt x 通常比dt x Example dt lt data table id 1 1e7 var rnorm 1e6 test lt microbenchmark
  • Primefaces 咆哮不适用于所有页面

    我的网站有一个通用模板 即xhtml file而包含growl
  • 如何在Android中的触摸事件上移动曲线上的图像?

    我使用在画布上绘制了三次曲线 myPath cubicTo 10 10 w h 2 10 h 10 我在该屏幕上有四个 ImageView 当我通过触摸拖动该图像时 我想在绘制的曲线上移动该 ImageView 我已经提到了链接 在曲线路径
  • 带有 API 平台捆绑包的自定义 Symfony Action

    我尝试使用 Symfony 包构建 APIAPI平台 Api 资源通过 HTTP 动词 POST GET PUT DELETE 提供自动 CRUD 操作 我想要的是添加一个端点来处理自定义 POST 操作 使用自定义负载 正文 而不依赖于任
  • “all”是否会向媒体查询添加任何内容?

    这是 media all and min width medium min 和这个一样吗 media min width medium min 我不明白为什么添加 全部 会比不指定有任何区别 然而我经常看到 全部 被添加了 是否存在需要这样
  • 如何解析 ISO 8601 格式的日期?

    我需要解析RFC 3339字符串像 2008 09 03T20 56 35 450686Z 进入Python的datetime type 我已经发现strptimePython标准库中有 但是不是很方便 做这个的最好方式是什么 isopar