首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

最好用的 6款Python 的日期时间库

链接:https://opensource.com/article/18/4/python-datetime-libraries

写过Python程序的人都知道,Python日期和时间的处理非常繁琐和麻烦。

除了将字符串转换为更有用的 Python 对象之外,还有许多库具有一些有用的方法和工具,可以让你更轻松地进行时间测试、将时间转换为不同的时区、以人类可读的格式输出时间信息,本文将介绍以下六个Python的时间日期库:

● Dateutil

● Arrow

● Moment

● Maya

● Delorean

● Freezegun

内建的 datetime 模块

在介绍其他库之前,让我们回顾以下如何使用datetime模块将日期字符串转换为Python日期时间对象。

假设我们从API接收到这个日期字符串,并且需要它作为Python datetime对象存在:

2018-04-29T17:45: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表示。

由于字符串中的“Z”表示此日期时间字符串采用UTC,所以我们可以在格式中忽略此项。

此转换的代码如下所示:

格式化字符串很难阅读和理解。有些人不太了解阅读datetime代码的人就会发现这很难理解,尽管其含义已有文档说明,但仍然很难阅读。

让我们看看其他库如何处理这种转换。

1、Dateutil

Dateutil模块为datetime模块提供了一些扩展,依然以上面的示例为例,实现相同的结果则要简单得多:

dateutil解析后可以自动返回字符串的时区。由于我们采用UTC,你可以看到返回了datetime对象。如果你想parse完全忽略时区信息,并返回一个原生的DateTime对象,你可以传递参数ignoretz=True给parse,像这样:

Dateutil还可以解析更多可读的日期字符串:

dateutil还提供了relativedelta,用于计算两个日期时间之间的时差或从日期时间添加/删除,rrule用于创建重复日期时间,tz用于处理时区以及其他工具。

2、Arrow

Arrow是另一个库,其目标是进行操作,格式化,并处理更合理的日期和时间。它包括dateutil模块,根据其文档描述Arrow旨在“帮助你使用更少的代码来处理日期和时间”。

要返回我们的解析示例,下面介绍如何使用 Arrow 将日期字符串转换为 Arrow 的 datetime 类的实例:

你也可以在第二个参数中指定get() 格式,就像使用strptime一样,Arrow会尽力解析你提供的字符串,get() 返回 Arrow 的 datetime 类的一个实例。要使用Arrow来获取 Python datetime对象,可以如下所示:

通过Arrow datetime类的实例,你还可以访问Arrow的其他有用方法。例如,它的humanize()方法将日期时间解析成可读的短语,如下所示:

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180622B0DTR600?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券