Python 的日期时间库

内建的 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 对象相对较近或较远的距离而变化。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值