Python arrow
最后修改于 2024 年 1 月 29 日
在本文中,我们将介绍如何使用 arrow 模块在 Python 中处理日期和时间。
Python arrow
Arrow 是一个用于处理日期和时间的 Python 模块。与内置的日期和时间工具相比,它使得创建、操作、格式化和转换日期、时间和时间戳更加容易。
安装 arrow
使用以下命令安装 arrow 模块
$ sudo pip3 install arrow
我们使用 pip3
命令安装 arrow
模块。
UTC 时间
有一个实际的需求是统一一个全局时间。一个全局时间有助于避免时区和夏令时的混淆。UTC(协调世界时)是主要的计时标准。UTC 用于航空、天气预报、飞行计划、空中交通管制指令和地图。与本地时间不同,UTC 不会随着季节的变化而改变。
#!/usr/bin/python import arrow utc = arrow.utcnow() print(utc) print(utc.to('local'))
UTC 时间是通过 utcnow
函数创建的。
print(utc.to('local'))
使用 to
方法,我们将 UTC 时间转换为本地时间。
本地时间
本地时间是特定地区或时区的时间。
#!/usr/bin/python import arrow now = arrow.now() print(now) print(now.to('UTC'))
本地时间是通过 now
函数创建的。to
方法用于将本地时间转换为 UTC 时间。
解析时间
get
方法用于解析时间。
#!/usr/bin/python import arrow d1 = arrow.get('2012-06-05 16:20:03', 'YYYY-MM-DD HH:mm:ss') print(d1) d2 = arrow.get(1504384602) print(d2)
该示例从日期时间字符串和时间戳解析时间。
$ ./parse_time.py 2012-06-05T16:20:03+00:00 2017-09-02T20:36:42+00:00
Unix 时间
Unix 时间是从 Unix 纪元开始经过的秒数。timestamp
属性返回自 1970 年 1 月 1 日 0 时 0 分 0 秒(协调世界时)以来的时间秒数。
#!/usr/bin/python import arrow utc = arrow.utcnow() print(utc) unix_time = utc.timestamp print(unix_time) date = arrow.Arrow.fromtimestamp(unix_time) print(date)
该示例打印本地时间和 Unix 时间。然后它将 Unix 时间转换回日期对象。
date = arrow.Arrow.fromtimestamp(unix_time)
使用 fromtimestamp
方法,我们将 Unix 时间转换回 arrow 日期对象。
2017-09-02T21:57:11.483795+02:00 1504382231 2017-09-02T21:57:11+02:00
也可以将日期格式化为 Unix 时间。
#!/usr/bin/python import arrow utc = arrow.utcnow() print(utc.format('X'))
通过将 'X'
格式说明符传递给 format
方法,我们将当前本地日期打印为 Unix 时间。
$ ./format2unix.py 1504383196
格式化日期和时间
日期和时间可以使用 format
方法进行格式化。
#!/usr/bin/python import arrow now = arrow.now() year = now.format('YYYY') print("Year: {0}".format(year)) date = now.format('YYYY-MM-DD') print("Date: {0}".format(date)) date_time = now.format('YYYY-MM-DD HH:mm:ss') print("Date and time: {0}".format(date_time)) date_time_zone = now.format('YYYY-MM-DD HH:mm:ss ZZ') print("Date and time and zone: {0}".format(date_time_zone))
该示例通过利用 format
方法,以各种格式显示本地日期和时间。
$ ./formatting.py Year: 2017 Date: 2017-09-02 Date and time: 2017-09-02 22:00:32 Date and time and zone: 2017-09-02 22:00:32 +02:00
转换为区域时间
使用 to
方法,我们可以将日期和时间转换为区域时间。
#!/usr/bin/python import arrow utc = arrow.utcnow() print(utc.to('US/Pacific').format('HH:mm:ss')) print(utc.to('Europe/Bratislava').format('HH:mm:ss')) print(utc.to('Europe/Moscow').format('HH:mm:ss'))
该示例创建一个 UTC 时间并将其转换为三个区域时间。
$ ./converting.py 13:24:06 22:24:06 23:24:06
这是输出。
获取星期几
可以使用 weekday
或 format
方法查找日期的星期几。
#!/usr/bin/python import arrow d1 = arrow.get('1948-12-13') print(d1.weekday()) print(d1.format('dddd'))
代码示例获取 '1948-12-13' 的星期几。
$ ./weekday.py 0 Monday
1948 年 12 月 12 日是星期一。
时间偏移
shift
方法用于时间偏移。
#!/usr/bin/python import arrow now = arrow.now() print(now.shift(hours=5).time()) print(now.shift(days=5).date()) print(now.shift(years=-8).date())
该示例计算当前本地时间并对其进行三次偏移。
print(now.shift(hours=5).time())
我们将时间向前偏移五个小时。
print(now.shift(days=5).date())
我们将日期向前偏移五天。
print(now.shift(years=-8).date())
在这里,我们将日期向后偏移八年。
$ ./shifting.py 03:44:23.100887 2017-09-07 2009-09-02
夏令时
夏令时(DST)是在夏季将时钟拨快,以便傍晚日照时间更长的做法。在春季开始时时间向前调整一小时,在秋季向后调整为标准时间。
#!/usr/bin/python import arrow now = arrow.now() print(now.format("YYYY-MM-DD HH:mm:ss ZZ")) print(now.dst())
该示例使用 dst
显示夏令时。
$ ./daylightsaving.py 2017-09-02 22:46:37 +02:00 1:00:00
输出显示本地时间调整了一小时。
人性化日期和时间
在社交网站上,我们经常可以看到诸如“一小时前”或“5 分钟前”之类的术语,它们能快速地为人们提供有关帖子创建或修改时间的信息。Arrow 包含一个 humanize
方法来创建这些术语。
#!/usr/bin/python import arrow now = arrow.now() d1 = now.shift(minutes=-15).humanize() print(d1) d2 = now.shift(hours=5).humanize() print(d2)
该示例对两个日期进行了人性化处理。
$ ./humanizing.py 15 minutes ago in 4 hours
来源
在本文中,我们使用 arrow 模块在 Python 中处理了日期和时间。
作者
列出所有 Python 教程。