内建的 datetime 模块 在跳转到其他库之前,让我们回顾一下如何使用 datetime 模块将日期字符串转换为 Python datetime 对象。 假设我们从 API 接受到一个日期字符串,并且需要它作为 Python datetime 对象存在: [backcolor=rgb(238, 238, 238) !important][color=rgb(102, 102, 102) !important]
[color=rgb(170, 170, 170) !important]1 [color=rgb(170, 170, 170) !important]2 | [color=rgb(0, 153, 153) !important]2018[color=rgb(0, 111, 224) !important]-[color=rgb(0, 153, 153) !important]04[color=rgb(0, 111, 224) !important]-[color=rgb(0, 153, 153) !important]29T17[color=rgb(0, 111, 224) !important]:[color=rgb(0, 153, 153) !important]45[color=rgb(0, 111, 224) !important]:[color=rgb(0, 153, 153) !important]25Z | 这个字符串包括:
- 日期是 YYYY-MM-DD 格式的
- 字母 T 表示时间即将到来
- 时间是 HH:II:SS 格式的
- 表示此时间的时区指示符 Z 采用 UTC (详细了解日期时间字符格式)
要使用 datetime 模块将此字符串转换为 Python datetime 对象,你应该从 strptime 开始。 datetime.strptime 接受日期字符串和格式化字符并返回一个 Python datetime 对象。 我们必须手动将日期时间字符串的每个部分转换为 Python 的 datetime.strptime 可以理解的合适的格式化字符串。四位数年份由 %Y 表示,两位数月份是 %m,两位数的日期是 %d。在 24 小时制中,小时是 %H,分钟是 %M,秒是 %S。 为了得出这些结论,需要在Python 文档的表格中多加注意。 由于字符串中的 Z 表示此日期时间字符串采用 UTC,所以我们可以在格式中忽略此项。(现在,我们不会担心时区。) 转换的代码是这样的: [backcolor=rgb(238, 238, 238) !important][color=rgb(102, 102, 102) !important]
[color=rgb(170, 170, 170) !important]1 [color=rgb(170, 170, 170) !important]2 [color=rgb(170, 170, 170) !important]3 [color=rgb(170, 170, 170) !important]4 | [color=rgb(51, 51, 51) !important]$[color=rgb(0, 111, 224) !important] [color=teal !important]from [color=teal !important]datetime [color=teal !important]import datetime[color=rgb(0, 111, 224) !important] [color=rgb(51, 51, 51) !important]$[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]datetime[color=rgb(51, 51, 51) !important].[color=teal !important]strptime[color=rgb(51, 51, 51) !important]([color=rgb(221, 17, 68) !important]'2018-04-29T17:45:25Z'[color=rgb(51, 51, 51) !important],[color=rgb(0, 111, 224) !important] [color=rgb(221, 17, 68) !important]'%Y-%m-%dT%H:%M:%SZ'[color=rgb(51, 51, 51) !important]) [color=rgb(0, 45, 122) !important]datetime[color=rgb(51, 51, 51) !important].[color=teal !important]datetime[color=rgb(51, 51, 51) !important]([color=rgb(0, 153, 153) !important]2018[color=rgb(51, 51, 51) !important],[color=rgb(0, 111, 224) !important] [color=rgb(0, 153, 153) !important]4[color=rgb(51, 51, 51) !important],[color=rgb(0, 111, 224) !important] [color=rgb(0, 153, 153) !important]29[color=rgb(51, 51, 51) !important],[color=rgb(0, 111, 224) !important] [color=rgb(0, 153, 153) !important]17[color=rgb(51, 51, 51) !important],[color=rgb(0, 111, 224) !important][color=rgb(0, 153, 153) !important]45[color=rgb(51, 51, 51) !important],[color=rgb(0, 111, 224) !important] [color=rgb(0, 153, 153) !important]25[color=rgb(51, 51, 51) !important]) | 格式字符串很难阅读和理解。我必须手动计算原始字符串中的字母 T 和 “Z”的位置,以及标点符号和格式化字符串,如 %S 和 %m。有些不太了解 datetime 的人阅读我的代码可能会发现它很难理解,尽管其含义已有文档记载,但它仍然很难阅读。 让我们看看其他库是如何处理这种转换的。 Dateutil dateutil 模块对 datetime 模块做了一些扩展。 继续使用上面的解析示例,使用 dateutil 实现相同的结果要简单得多: [backcolor=rgb(238, 238, 238) !important][color=rgb(102, 102, 102) !important]
[color=rgb(170, 170, 170) !important]1 [color=rgb(170, 170, 170) !important]2 [color=rgb(170, 170, 170) !important]3 [color=rgb(170, 170, 170) !important]4 | [color=rgb(51, 51, 51) !important]$[color=rgb(0, 111, 224) !important] [color=teal !important]from [color=rgb(0, 45, 122) !important]dateutil[color=rgb(51, 51, 51) !important].[color=teal !important]parser [color=teal !important]import parse [color=rgb(51, 51, 51) !important]$[color=rgb(0, 111, 224) !important] [color=teal !important]parse[color=rgb(51, 51, 51) !important]([color=rgb(221, 17, 68) !important]'2018-04-29T17:45:25Z'[color=rgb(51, 51, 51) !important]) [color=rgb(0, 45, 122) !important]datetime[color=rgb(51, 51, 51) !important].[color=teal !important]datetime[color=rgb(51, 51, 51) !important]([color=rgb(0, 153, 153) !important]2018[color=rgb(51, 51, 51) !important],[color=rgb(0, 111, 224) !important] [color=rgb(0, 153, 153) !important]4[color=rgb(51, 51, 51) !important],[color=rgb(0, 111, 224) !important] [color=rgb(0, 153, 153) !important]29[color=rgb(51, 51, 51) !important],[color=rgb(0, 111, 224) !important] [color=rgb(0, 153, 153) !important]17[color=rgb(51, 51, 51) !important],[color=rgb(0, 111, 224) !important][color=rgb(0, 153, 153) !important]45[color=rgb(51, 51, 51) !important],[color=rgb(0, 111, 224) !important] [color=rgb(0, 153, 153) !important]25[color=rgb(51, 51, 51) !important],[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]tzinfo[color=rgb(0, 111, 224) !important]=[color=teal !important]tzutc[color=rgb(51, 51, 51) !important]([color=rgb(51, 51, 51) !important])[color=rgb(51, 51, 51) !important]) | 如果字符串包含时区,那么 dateutil 解析器会自动返回字符串的时区。由于我们在 UTC 时区,你可以看到返回来一个 datetime 对象。如果你想解析完全忽略时区信息并返回原生的 datetime 对象,你可以传递 ignoretz=True 来解析,如下所示: [backcolor=rgb(238, 238, 238) !important][color=rgb(102, 102, 102) !important]
[color=rgb(170, 170, 170) !important]1 [color=rgb(170, 170, 170) !important]2 [color=rgb(170, 170, 170) !important]3 [color=rgb(170, 170, 170) !important]4 | [color=rgb(51, 51, 51) !important]$[color=rgb(0, 111, 224) !important] [color=teal !important]from [color=rgb(0, 45, 122) !important]dateutil[color=rgb(51, 51, 51) !important].[color=teal !important]parser [color=teal !important]import parse [color=rgb(51, 51, 51) !important]$[color=rgb(0, 111, 224) !important] [color=teal !important]parse[color=rgb(51, 51, 51) !important]([color=rgb(221, 17, 68) !important]'2018-04-29T17:45:25Z'[color=rgb(51, 51, 51) !important],[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]ignoretz[color=rgb(0, 111, 224) !important]=[color=rgb(128, 0, 128) !important]True[color=rgb(51, 51, 51) !important]) [color=rgb(0, 45, 122) !important]datetime[color=rgb(51, 51, 51) !important].[color=teal !important]datetime[color=rgb(51, 51, 51) !important]([color=rgb(0, 153, 153) !important]2018[color=rgb(51, 51, 51) !important],[color=rgb(0, 111, 224) !important] [color=rgb(0, 153, 153) !important]4[color=rgb(51, 51, 51) !important],[color=rgb(0, 111, 224) !important] [color=rgb(0, 153, 153) !important]29[color=rgb(51, 51, 51) !important],[color=rgb(0, 111, 224) !important] [color=rgb(0, 153, 153) !important]17[color=rgb(51, 51, 51) !important],[color=rgb(0, 111, 224) !important][color=rgb(0, 153, 153) !important]45[color=rgb(51, 51, 51) !important],[color=rgb(0, 111, 224) !important] [color=rgb(0, 153, 153) !important]25[color=rgb(51, 51, 51) !important]) | dateutil 还可以解析其他人类可读的日期字符串: [backcolor=rgb(238, 238, 238) !important][color=rgb(102, 102, 102) !important]
[color=rgb(170, 170, 170) !important]1 [color=rgb(170, 170, 170) !important]2 [color=rgb(170, 170, 170) !important]3 | [color=rgb(51, 51, 51) !important]$[color=rgb(0, 111, 224) !important] [color=teal !important]parse[color=rgb(51, 51, 51) !important]([color=rgb(221, 17, 68) !important]'April 29th, 2018 at 5:45 pm'[color=rgb(51, 51, 51) !important]) [color=rgb(0, 45, 122) !important]datetime[color=rgb(51, 51, 51) !important].[color=teal !important]datetime[color=rgb(51, 51, 51) !important]([color=rgb(0, 153, 153) !important]2018[color=rgb(51, 51, 51) !important],[color=rgb(0, 111, 224) !important] [color=rgb(0, 153, 153) !important]4[color=rgb(51, 51, 51) !important],[color=rgb(0, 111, 224) !important] [color=rgb(0, 153, 153) !important]29[color=rgb(51, 51, 51) !important],[color=rgb(0, 111, 224) !important] [color=rgb(0, 153, 153) !important]17[color=rgb(51, 51, 51) !important],[color=rgb(0, 111, 224) !important][color=rgb(0, 153, 153) !important]45[color=rgb(51, 51, 51) !important]) | dateutil 还提供了像 relativedelta 的工具,它用于计算两个日期时间之间的时间差或向日期时间添加或删除时间,rrule 创建重复日期时间,tz 用于解决时区以及其他工具。 Arrow Arrow 是另一个库,其目标是操作、格式化,以及处理对人类更友好的日期和时间。它包含 dateutil,根据其文档,它旨在“帮助你使用更少的包导入和更少的代码来处理日期和时间”。 要返回我们的解析示例,下面介绍如何使用 Arrow 将日期字符串转换为 Arrow 的 datetime 类的实例: [backcolor=rgb(238, 238, 238) !important][color=rgb(102, 102, 102) !important]
[color=rgb(170, 170, 170) !important]1 [color=rgb(170, 170, 170) !important]2 [color=rgb(170, 170, 170) !important]3 [color=rgb(170, 170, 170) !important]4 | [color=rgb(51, 51, 51) !important]$[color=rgb(0, 111, 224) !important] [color=teal !important]import arrow[color=rgb(0, 111, 224) !important] [color=rgb(51, 51, 51) !important]$[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]arrow[color=rgb(51, 51, 51) !important].[color=teal !important]get[color=rgb(51, 51, 51) !important]([color=rgb(221, 17, 68) !important]'2018-04-29T17:45:25Z'[color=rgb(51, 51, 51) !important]) [color=rgb(0, 111, 224) !important]<Arrow[color=rgb(0, 111, 224) !important][color=rgb(51, 51, 51) !important][[color=rgb(0, 153, 153) !important]2018[color=rgb(0, 111, 224) !important]-[color=rgb(0, 153, 153) !important]04[color=rgb(0, 111, 224) !important]-[color=rgb(0, 153, 153) !important]29T17[color=rgb(0, 111, 224) !important]:[color=rgb(0, 153, 153) !important]45[color=rgb(0, 111, 224) !important]:[color=rgb(0, 153, 153) !important]25[color=rgb(0, 111, 224) !important]+[color=rgb(0, 153, 153) !important]00[color=rgb(0, 111, 224) !important]:[color=rgb(0, 153, 153) !important]00[color=rgb(51, 51, 51) !important][color=rgb(0, 111, 224) !important]> | 你也可以在 get() 的第二个参数中指定格式,就像使用 strptime 一样,但是 Arrow 会尽力解析你给出的字符串,get() 返回 Arrow 的 datetime 类的一个实例。要使用 Arrow 来获取 Python datetime 对象,按照如下所示链式 datetime: [backcolor=rgb(238, 238, 238) !important][color=rgb(102, 102, 102) !important]
[color=rgb(170, 170, 170) !important]1 [color=rgb(170, 170, 170) !important]2 [color=rgb(170, 170, 170) !important]3 | [color=rgb(51, 51, 51) !important]$[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]arrow[color=rgb(51, 51, 51) !important].[color=teal !important]get[color=rgb(51, 51, 51) !important]([color=rgb(221, 17, 68) !important]'2018-04-29T17:45:25Z'[color=rgb(51, 51, 51) !important])[color=rgb(51, 51, 51) !important].[color=teal !important]datetime [color=rgb(0, 45, 122) !important]datetime[color=rgb(51, 51, 51) !important].[color=teal !important]datetime[color=rgb(51, 51, 51) !important]([color=rgb(0, 153, 153) !important]2018[color=rgb(51, 51, 51) !important],[color=rgb(0, 111, 224) !important] [color=rgb(0, 153, 153) !important]4[color=rgb(51, 51, 51) !important],[color=rgb(0, 111, 224) !important] [color=rgb(0, 153, 153) !important]29[color=rgb(51, 51, 51) !important],[color=rgb(0, 111, 224) !important] [color=rgb(0, 153, 153) !important]17[color=rgb(51, 51, 51) !important],[color=rgb(0, 111, 224) !important][color=rgb(0, 153, 153) !important]45[color=rgb(51, 51, 51) !important],[color=rgb(0, 111, 224) !important] [color=rgb(0, 153, 153) !important]25[color=rgb(51, 51, 51) !important],[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]tzinfo[color=rgb(0, 111, 224) !important]=[color=teal !important]tzutc[color=rgb(51, 51, 51) !important]([color=rgb(51, 51, 51) !important])[color=rgb(51, 51, 51) !important]) | 通过 Arrow datetime 类的实例,你可以访问 Arrow 的其他有用方法。例如,它的 humanize() 方法将日期时间翻译成人类可读的短语,就像这样: [backcolor=rgb(238, 238, 238) !important][color=rgb(102, 102, 102) !important]
[color=rgb(170, 170, 170) !important]1 [color=rgb(170, 170, 170) !important]2 [color=rgb(170, 170, 170) !important]3 [color=rgb(170, 170, 170) !important]4 [color=rgb(170, 170, 170) !important]5 | [color=rgb(51, 51, 51) !important]$[color=rgb(0, 111, 224) !important] [color=teal !important]import arrow [color=rgb(51, 51, 51) !important]$[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]utc[color=rgb(0, 111, 224) !important] [color=rgb(0, 111, 224) !important]=[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]arrow[color=rgb(51, 51, 51) !important].[color=teal !important]utcnow[color=rgb(51, 51, 51) !important]([color=rgb(51, 51, 51) !important]) [color=rgb(51, 51, 51) !important]$[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]utc[color=rgb(51, 51, 51) !important].[color=teal !important]humanize[color=rgb(51, 51, 51) !important]([color=rgb(51, 51, 51) !important]) [color=rgb(221, 17, 68) !important]'seconds ago' | 在 Arrow 的文档中阅读更多关于其有用方法的信息。 Moment Moment 的作者认为它是“内部测试版”,但即使它处于早期阶段,它也是非常受欢迎的,我们想来讨论它。 Moment 的方法将字符转换为其他更有用的东西很简单,类似于我们之前提到的库: [backcolor=rgb(238, 238, 238) !important][color=rgb(102, 102, 102) !important]
[color=rgb(170, 170, 170) !important]1 [color=rgb(170, 170, 170) !important]2 [color=rgb(170, 170, 170) !important]3 [color=rgb(170, 170, 170) !important]4 | [color=rgb(51, 51, 51) !important]$[color=rgb(0, 111, 224) !important] [color=teal !important]import moment [color=rgb(51, 51, 51) !important]$[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]moment[color=rgb(51, 51, 51) !important].[color=teal !important]date[color=rgb(51, 51, 51) !important]([color=rgb(221, 17, 68) !important]'2018-04-29T17:45:25Z'[color=rgb(51, 51, 51) !important]) [color=rgb(0, 111, 224) !important]<[color=teal !important]Moment[color=rgb(51, 51, 51) !important]([color=rgb(0, 153, 153) !important]2018[color=rgb(0, 111, 224) !important]-[color=rgb(0, 153, 153) !important]04[color=rgb(0, 111, 224) !important]-[color=rgb(0, 153, 153) !important]29T17[color=rgb(0, 111, 224) !important]:[color=rgb(0, 153, 153) !important]45[color=rgb(0, 111, 224) !important]:[color=rgb(0, 153, 153) !important]25[color=rgb(51, 51, 51) !important])[color=rgb(0, 111, 224) !important]> | 就像其他库一样,它最初返回它自己的 datetime 类的实例,要返回 Python datetime 对象,添加额外的 date() 调用即可。 [backcolor=rgb(238, 238, 238) !important][color=rgb(102, 102, 102) !important]
[color=rgb(170, 170, 170) !important]1 [color=rgb(170, 170, 170) !important]2 [color=rgb(170, 170, 170) !important]3 | [color=rgb(51, 51, 51) !important]$[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]moment[color=rgb(51, 51, 51) !important].[color=teal !important]date[color=rgb(51, 51, 51) !important]([color=rgb(221, 17, 68) !important]'2018-04-29T17:45:25Z'[color=rgb(51, 51, 51) !important])[color=rgb(51, 51, 51) !important].[color=teal !important]date [color=rgb(0, 45, 122) !important]datetime[color=rgb(51, 51, 51) !important].[color=teal !important]datetime[color=rgb(51, 51, 51) !important]([color=rgb(0, 153, 153) !important]2018[color=rgb(51, 51, 51) !important],[color=rgb(0, 111, 224) !important] [color=rgb(0, 153, 153) !important]4[color=rgb(51, 51, 51) !important],[color=rgb(0, 111, 224) !important] [color=rgb(0, 153, 153) !important]29[color=rgb(51, 51, 51) !important],[color=rgb(0, 111, 224) !important] [color=rgb(0, 153, 153) !important]17[color=rgb(51, 51, 51) !important],[color=rgb(0, 111, 224) !important][color=rgb(0, 153, 153) !important]45[color=rgb(51, 51, 51) !important],[color=rgb(0, 111, 224) !important] [color=rgb(0, 153, 153) !important]25[color=rgb(51, 51, 51) !important],[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]tzinfo[color=rgb(0, 111, 224) !important]=[color=rgb(0, 111, 224) !important]<StaticTzInfo[color=rgb(0, 111, 224) !important] [color=rgb(221, 17, 68) !important]'Z'[color=rgb(0, 111, 224) !important]>[color=rgb(51, 51, 51) !important]) | 这将 Moment datetime 类转换为 Python datetime 对象。 Moment 还提供了使用人类可读的语言创建新日期的方法。例如创建一个明天的日期: [backcolor=rgb(238, 238, 238) !important][color=rgb(102, 102, 102) !important]
[color=rgb(170, 170, 170) !important]1 [color=rgb(170, 170, 170) !important]2 [color=rgb(170, 170, 170) !important]3 | [color=rgb(51, 51, 51) !important]$[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]moment[color=rgb(51, 51, 51) !important].[color=teal !important]date[color=rgb(51, 51, 51) !important]([color=rgb(221, 17, 68) !important]"tomorrow"[color=rgb(51, 51, 51) !important]) [color=rgb(0, 111, 224) !important]<[color=teal !important]Moment[color=rgb(51, 51, 51) !important]([color=rgb(0, 153, 153) !important]2018[color=rgb(0, 111, 224) !important]-[color=rgb(0, 153, 153) !important]04[color=rgb(0, 111, 224) !important]-[color=rgb(0, 153, 153) !important]06T11[color=rgb(0, 111, 224) !important]:[color=rgb(0, 153, 153) !important]24[color=rgb(0, 111, 224) !important]:[color=rgb(0, 153, 153) !important]42[color=rgb(51, 51, 51) !important])[color=rgb(0, 111, 224) !important]> | 它的 add() 和 subtract() 命令使用关键字参数来简化日期的操作。为了获得后天,Moment 会使用下面的代码: [backcolor=rgb(238, 238, 238) !important][color=rgb(102, 102, 102) !important]
[color=rgb(170, 170, 170) !important]1 [color=rgb(170, 170, 170) !important]2 [color=rgb(170, 170, 170) !important]3 | [color=rgb(51, 51, 51) !important]$[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]moment[color=rgb(51, 51, 51) !important].[color=teal !important]date[color=rgb(51, 51, 51) !important]([color=rgb(221, 17, 68) !important]"tomorrow"[color=rgb(51, 51, 51) !important])[color=rgb(51, 51, 51) !important].[color=teal !important]add[color=rgb(51, 51, 51) !important]([color=rgb(0, 45, 122) !important]days[color=rgb(0, 111, 224) !important]=[color=rgb(0, 153, 153) !important]1[color=rgb(51, 51, 51) !important]) [color=rgb(0, 111, 224) !important]<[color=teal !important]Moment[color=rgb(51, 51, 51) !important]([color=rgb(0, 153, 153) !important]2018[color=rgb(0, 111, 224) !important]-[color=rgb(0, 153, 153) !important]04[color=rgb(0, 111, 224) !important]-[color=rgb(0, 153, 153) !important]07T11[color=rgb(0, 111, 224) !important]:[color=rgb(0, 153, 153) !important]26[color=rgb(0, 111, 224) !important]:[color=rgb(0, 153, 153) !important]48[color=rgb(51, 51, 51) !important])[color=rgb(0, 111, 224) !important]> |
Maya Maya 包含了 Python 中其他流行处理日期时间的库,包括 Humanize、 pytz 和 pendulum 等等。这个项目旨在让人们更容易处理日期。 Maya 的 README 包含几个有用的实例。以下是如何使用 Maya 来重新处理以前的解析示例: [backcolor=rgb(238, 238, 238) !important][color=rgb(102, 102, 102) !important]
[color=rgb(170, 170, 170) !important]1 [color=rgb(170, 170, 170) !important]2 [color=rgb(170, 170, 170) !important]3 [color=rgb(170, 170, 170) !important]4 | [color=rgb(51, 51, 51) !important]$[color=rgb(0, 111, 224) !important] [color=teal !important]import maya [color=rgb(51, 51, 51) !important]$[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]maya[color=rgb(51, 51, 51) !important].[color=teal !important]parse[color=rgb(51, 51, 51) !important]([color=rgb(221, 17, 68) !important]'2018-04-29T17:45:25Z'[color=rgb(51, 51, 51) !important])[color=rgb(51, 51, 51) !important].[color=teal !important]datetime[color=rgb(51, 51, 51) !important]([color=rgb(51, 51, 51) !important]) [color=rgb(0, 45, 122) !important]datetime[color=rgb(51, 51, 51) !important].[color=teal !important]datetime[color=rgb(51, 51, 51) !important]([color=rgb(0, 153, 153) !important]2018[color=rgb(51, 51, 51) !important],[color=rgb(0, 111, 224) !important] [color=rgb(0, 153, 153) !important]4[color=rgb(51, 51, 51) !important],[color=rgb(0, 111, 224) !important] [color=rgb(0, 153, 153) !important]29[color=rgb(51, 51, 51) !important],[color=rgb(0, 111, 224) !important] [color=rgb(0, 153, 153) !important]17[color=rgb(51, 51, 51) !important],[color=rgb(0, 111, 224) !important][color=rgb(0, 153, 153) !important]45[color=rgb(51, 51, 51) !important],[color=rgb(0, 111, 224) !important] [color=rgb(0, 153, 153) !important]25[color=rgb(51, 51, 51) !important],[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]tzinfo[color=rgb(0, 111, 224) !important]=[color=rgb(0, 111, 224) !important]<[color=rgb(0, 45, 122) !important]UTC[color=rgb(0, 111, 224) !important]>[color=rgb(51, 51, 51) !important]) | 注意我们必须在 maya.parse() 之后调用 datetime()。如果我们跳过这一步,Maya 将会返回一个 MayaDT 类的示例:。 由于 Maya 与 datetime 库中很多有用的方法重叠,因此它可以使用 MayaDT 类的实例执行诸如使用 slang_time() 方法将时间偏移量转换为纯文本语言,并将日期时间间隔保存在单个类的实例中。以下是如何使用 Maya 将日期时间表示为人类可读的短语: [backcolor=rgb(238, 238, 238) !important][color=rgb(102, 102, 102) !important]
[color=rgb(170, 170, 170) !important]1 [color=rgb(170, 170, 170) !important]2 [color=rgb(170, 170, 170) !important]3 [color=rgb(170, 170, 170) !important]4 | [color=rgb(51, 51, 51) !important]$[color=rgb(0, 111, 224) !important] [color=teal !important]import maya [color=rgb(51, 51, 51) !important]$[color=rgb(0, 111, 224) !important] [color=rgb(0, 45, 122) !important]maya[color=rgb(51, 51, 51) !important].[color=teal !important]parse[color=rgb(51, 51, 51) !important]([color=rgb(221, 17, 68) !important]'2018-04-29T17:45:25Z'[color=rgb(51, 51, 51) !important])[color=rgb(51, 51, 51) !important].[color=teal !important]slang_time[color=rgb(51, 51, 51) !important]([color=rgb(51, 51, 51) !important]) '[color=rgb(0, 153, 153) !important]23[color=rgb(0, 111, 224) !important] [color=teal !important]days [color=teal !important]from now | 显然,slang_time() 的输出将根据距离 datetime 对象相对较近或较远的距离而变化。 |