6 个 Python 的日期www.maya8.com时间库

2018-07-05 09:33 来源:未知 网络编辑:admin 阅读 报错

  正在 Python 中有很众库能够很容易地测试、转换和读取日期和时刻讯息。

  曾几何时,咱们中的一个体(Lacey)盯了一个众小时的 Python 文档[2]中描摹日期和时刻式子化字符串的外格。当我试图编写从 API 中将日期时刻字符串转换为 Python datetime[3] 对象时,我很难阐明个中的特定个别,以是我确定要求助助。

  读者,假如你没有从这个月的 Python 专栏中取得任何东西,只是研习到有比 datetime 的 strptime 更容易地将 datetime 字符串转换为 datetime 对象的方式,那么咱们感到就仍旧获胜了。

  然而,除了将字符串转换为更有效的 Python 对象以外,再有很众库都有少许有效的方式和器械,能够让您更轻松地实行时刻测试、将时刻转换为差异的时区、以人类可读的式子通报时刻讯息,等等。假如这是你正在 Python 中第一次接触日期和时刻,请暂停并阅读 怎样操纵 Python的日期和时刻[4] 。要阐明为什么正在编程中解决日期和时刻是繁难的,请阅读 蒙昧的步骤员信赖时刻[5]。

  正在跳转到其他库之前,让咱们回想一下怎样操纵 datetime 模块将日期字符串转换为 Python datetime 对象。

  假设咱们从 API 经受到一个日期字符串,而且须要它举动 Python datetime 对象存正在:

  呈现此时刻的时区指示符 Z 采用 UTC (仔细理解日期时刻字符式子[12])

  咱们务必手动将日期时刻字符串的每个个别转换为 Python 的 datetime.strptime 能够阐明的适当的式子化字符串。四位数年份由 %Y 呈现,两位数月份是 %m,两位数的日期是 %d。正在 24 小时制中,小时是 %H,分钟是 %M,秒是 %S。

  因为字符串中的 Z 呈现此日期时刻字符串采用 UTC,是以咱们能够正在式子中大意此项。(现正在,咱们不会操心时区。)

  式子字符串很难阅读和阐明。我务必手动策画原始字符串中的字母 T 和 “Z”的名望,以及标点符号和式子化字符串,如 %S 和 %m。有些不太理解 datetime 的人阅读我的代码或许会涌现它很难阐明,纵然其寄义已有文档纪录,但它已经很难阅读。

  不断操纵上面的解析示例,操纵 dateutil 完毕无别的结果要方便得众:

  假如字符串包蕴时区,那么 dateutil 解析器会自愿返回字符串的时区。因为咱们正在 UTC 时区,你能够看到返回来一个 datetime 对象。假如你念解析统统大意时区讯息并返回原生的 datetime 对象,你能够通报 ignoretz=True 来解析,如下所示:

  dateutil 还供给了像 relativedelta[15] 的器械,它用于策画两个日期时刻之间的时刻差或向日期时刻增加或删除时刻,rrule[16] 创修反复日期时刻,tz[17] 用于治理时区以及其他器械。

  Arrow[18] 是另一个库,其对象是操作、式子化,以及解决对人类更友爱的日期和时刻。它包蕴 dateutil,遵循其文档[19],它旨正在“助助你操纵更少的包导入和更少的代码来解决日期和时刻”。

  要返回咱们的解析示例,下面先容怎样操纵 Arrow 将日期字符串转换为 Arrow 的 datetime 类的实例:

  通过 Arrow datetime 类的实例,你能够探访 Arrow 的其他有效方式。比方,它的 humanize() 方式将日期时刻翻译成人类可读的短语,就像如此:

  Moment[21] 的作家以为它是“内部测试版”,但纵然它处于早期阶段,它也瑕瑜常受接待的,咱们念来讲论它。

  Moment 的方式将字符转换为其他更有效的东西很方便,相仿于咱们之条件到的库:

  就像其他库相同,它最初返回它己方的 datetime 类的实例,要返回 Python datetime 对象,增加卓殊的 date() 挪用即可。

  Moment 还供给了操纵人类可读的说话创修新日期的方式。比方创修一个来日的日期:

  它的 add() 和 subtract() 夂箢操纵合节字参数来简化日期的操作。为了取得后天,Moment 会操纵下面的代码:

  Maya 的 README 包蕴几个有效的实例。以下是怎样操纵 Maya 来从新解决以前的解析示例:

  因为 Maya 与 datetime 库中许众有效的方式重叠,以是它能够操纵 MayaDT 类的实例推行诸如操纵 slang_time() 方式将时刻偏移量转换为纯文本说话,并将日期时刻间隔保全正在单个类的实例中。以下是怎样操纵 Maya 将日期时刻呈现为人类可读的短语:

  彰着,slang_time() 的输出将遵循隔绝 datetime 对象相对较近或较远的隔绝而改变。

  Delorean[23],以 《返回另日》 影戏中的时刻观光汽车定名,它对付控制日期时刻尤其有效,网罗将日期时刻转换为其他时区并增加或减去时刻。

  Delorean 须要有用的 Python datetime 对象才气办事,是以假如你须要操纵时刻字符串,最好将其与上述库中的一个配合操纵。比方,将 Maya 与 Delorean 沿途操纵:

  现正在,你有了一个 datetime 对象 d_t,你能够操纵 Delorean 来做少许事务,比方将日期时刻转换为美邦东部时区:

  你也能够操纵自然说话方式来操作 datetime 对象。获取 2018 年 4 月 29 日之后的下个礼拜五(咱们现正在操纵的):

  上面提到的每个库都供给了一组差异的个性和成效,也许很难确定哪一个最适合你的须要。Maya 的作家[26], Kenneth Reitz 说到:“总共这些项目相辅相成,它们都是咱们的伴侣”。

  这些库共享少许成效,但不是扫数。有些擅长时刻操作,有些擅长解析,但它们都有配合的对象,即让你对日期和时刻的办事更轻松。下次你涌现己方对 Python 的内置 datetime 模块感应悲哀,咱们希冀你能够拣选个中的一个库实行试验。


关键词: www.maya8.co

相关新闻

至顶 至底