python时间模块哪个好arrow模块_Arrow:Python更好的日期和时间处理

Arrow是一个Python库,用于简化日期和时间的操作。它提供了一个直观的API,支持日期时间的创建、格式化、转换等功能。该库支持多种时区,并能够解析ISO8601格式的日期时间。此外,Arrow还支持人性化的时间表达方式。
摘要由CSDN通过智能技术生成

Arrow是一个Python库,它提供了一种明智且人性化的方法来创建,操作,格式化和转换日期,时间和时间戳。它实现并更新了日期时间类型,填补了功能上的空白,并提供了支持许多常见创建方案的智能模块API。简而言之,它可以帮助您以更少的导入和更少的代码来处理日期和时间。

Arrow以时间之箭命名,灵感来自moment.js和请求。

为什么在内置模块上使用Arrow?

Python的标准库和其他一些底层模块具有几乎完整的日期,时间和时区功能,但是从可用性的角度来看效果并不理想:太多模块:日期时间,时间,日历,dateutil,pytz等

类型太多:日期,时间,日期时间,tzinfo,timedelta,relativedelta等。

时区和时间戳转换冗长且令人不快

时区朴素是常态

功能上的差距:ISO 8601解析,时间跨度,人性化

功能完全实现的日期时间直接替换

支持Python 2.7、3.5、3.6、3.7、3.8和3.9

默认为时区感知和UTC

为许多常见的输入方案提供超简单的创建选项

shift 支持相对偏移量(包括周)的方法

自动格式化和解析字符串

广泛支持ISO 8601

时区转换

时间戳记可作为属性使用

生成时间范围,范围,下限和上限,以显示从微秒到年的时间范围

人性化并支持不断增加的贡献区域列表

可扩展为您自己的箭头衍生类型

快速入门

安装

要安装Arrow,请使用pip或pipenv:

$ pip install -U arrow

用法示例

>>> import arrow >>>arrow.get('2013-05-11T21:23:58.970460+07:00') >>>utc = arrow.utcnow() >>>utc >>>utc = utc.shift(hours=-1) >>>utc >>>local = utc.to('US/Pacific') >>>local >>>local.timestamp 1368303838 >>>local.format() '2013-05-11 13:23:58 -07:00' >>>local.format('YYYY-MM-DD HH:mm:ss ZZ') '2013-05-11 13:23:58 -07:00' >>>local.humanize() 'an hour ago' >>>local.humanize(locale='ko_kr') '1시간 전'

用户指南

创建

轻松获取“现在”:

>>>arrow.utcnow() >>>arrow.now() >>>arrow.now('US/Pacific')

从时间戳创建(int或float):

>>>arrow.get(1367900664) >>>arrow.get(1367900664.152325)

使用天真的或时区感知的日期时间,或灵活指定时区:

>>>arrow.get(datetime.utcnow()) >>>arrow.get(datetime(2013, 5, 5), 'US/Pacific') >>> from dateutil import tz >>>arrow.get(datetime(2013, 5, 5), tz.gettz('US/Pacific')) >>>arrow.get(datetime.now(tz.gettz('US/Pacific')))

从字符串解析:

>>>arrow.get('2013-05-05 12:30:45', 'YYYY-MM-DD HH:mm:ss')

在字符串中搜索日期:

>>>arrow.get('June was born in May 1980', 'MMMM YYYY')

某些不符合格式8的ISO 8601兼容字符串可以被识别和解析:

>>>arrow.get('2013-09-30T15:34:00.000-07:00')

箭头对象也可以直接实例化,其参数与日期时间相同:

>>>arrow.get(2013, 5, 5) >>>arrow.Arrow(2013, 5, 5)

属性

获取日期时间或时间戳表示:

>>>a = arrow.utcnow() >>>a.datetime datetime.datetime(2013, 5, 7, 4, 38, 15, 447644, tzinfo=tzutc()) >>>a.timestamp 1367901495

获取原始日期时间和tzinfo:

>>>a.naive datetime.datetime(2013, 5, 7, 4, 38, 15, 447644) >>>a.tzinfo tzutc()

获取任何日期时间值:

>>>a.year 2013

调用返回属性的datetime函数:

>>>a.date() datetime.date(2013, 5, 7) >>>a.time() datetime.time(4, 38, 15, 447644)

替换和移位

获取一个>>>arw = arrow.utcnow() >>>arw >>>arw.replace(hour=4, minute=40)

或者,获得一个属性向前或向后移动的对象:

>>>arw.shift(weeks=+3)

甚至可以在不更改其他属性的情况下替换时区:

>>>arw.replace(tzinfo='US/Pacific')

在歧义时间的较早和较晚时刻之间移动:

>>>paris_transition = arrow.Arrow(2019, 10, 27, 2, tzinfo="Europe/Paris", fold=0) >>>paris_transition >>>paris_transition.ambiguous True >>>paris_transition.replace(fold=1)

格式

>>>arrow.utcnow().format('YYYY-MM-DD HH:mm:ss ZZ') '2013-05-07 05:23:16 -00:00'

转换

通过名称或tzinfo将UTC转换为其他时区:

>>>utc = arrow.utcnow() >>>utc >>>utc.to('US/Pacific') >>>utc.to(tz.gettz('US/Pacific'))

或使用速记:

>>>utc.to('local') >>>utc.to('local').to('utc')

人性化

相对于现在的人性化:

>>>past = arrow.utcnow().shift(hours=-1) >>>past.humanize() 'an hour ago'

或另一个箭头或日期时间:

>>>present = arrow.utcnow() >>>future = present.shift(hours=2) >>>future.humanize(present) 'in 2 hours'

将时间表示为相对时间或仅包括距离

>>>present = arrow.utcnow() >>>future = present.shift(hours=2) >>>future.humanize(present) 'in 2 hours' >>>future.humanize(present, only_distance=True) '2 hours'

指示特定的时间粒度(或多个):

>>>present = arrow.utcnow() >>>future = present.shift(minutes=66) >>>future.humanize(present, granularity="minute") 'in 66 minutes' >>>future.humanize(present, granularity=["hour", "minute"]) 'in an hour and 6 minutes' >>>present.humanize(future, granularity=["hour", "minute"]) 'an hour and 6 minutes ago' >>>future.humanize(present, only_distance=True, granularity=["hour", "minute"]) 'an hour and 6 minutes'

支持越来越多的语言环境(locales.py有关支持的语言,请参见):

>>>future = arrow.utcnow().shift(hours=1) >>>future.humanize(a, locale='ru') 'через 2 час(а,ов)'

范围和跨度

获取任何单位的时间跨度:

>>>arrow.utcnow().span('hour') (, )

或者只是获得地板和天花板:

>>>arrow.utcnow().floor('hour') >>>arrow.utcnow().ceil('hour')

您还可以获得一个时间范围:

>>>start = datetime(2013, 5, 5, 12, 30) >>>end = datetime(2013, 5, 5, 17, 15) >>> for r in arrow.Arrow.span_range('hour', start, end): ... print r ... (, ) (, ) (, ) (, ) (, )

或者只是遍历一段时间:

>>>start = datetime(2013, 5, 5, 12, 30) >>>end = datetime(2013, 5, 5, 17, 15) >>> for r in arrow.Arrow.range('hour', start, end): ... print repr(r) ...

工厂

使用工厂为自定义的Arrow派生类型利用Arrow的模块API。首先,导出您的类型:

>>> class CustomArrow(arrow.Arrow): ... ... def days_till_xmas(self): ... ... xmas = arrow.Arrow(self.year, 12, 25) ... ... if self > xmas: ... xmas = xmas.shift(years=1) ... ... return (xmas - self).days

然后获取并使用工厂:

>>>factory = arrow.ArrowFactory(CustomArrow) >>>custom = factory.utcnow() >>>custom >>> >>>custom.days_till_xmas() >>>211

支持令牌

使用以下标记进行解析和格式化。请注意,他们是不一样的令牌strptime:112211aable data-draft-node="block" data-draft-type="table" data-size="normal" data-row-style="normal">3able data-draft-node="block" data-draft-type="table" data-size="normal" data-row-style="normal">45ata-draft-node="block" data-draft-type="table" data-size="normal" data-row-style="normal">

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值