ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# Python Arrow 教程 > 原文: [http://zetcode.com/python/arrow/](http://zetcode.com/python/arrow/) Python Arrow 教程显示了如何在带有箭头模块的 Python 中使用日期和时间。 ## Python Arrow Arrow 是用于处理日期和时间的 Python 模块。 与内置的日期和时间工具相比,它使创建,操作,格式化和转换日期,时间和时间戳变得更加容易。 ## 安装 Arrow Arrow 模块使用以下命令安装: ```py $ sudo pip3 install arrow ``` 我们使用`pip3`命令安装`arrow`模块。 ## UTC 时间 实际需要一个全球时间。 全球时间可以避免时区和夏令时的混淆。 UTC(世界标准时间)是主要时间标准。 UTC 用于航空,天气预报,飞行计划,空中交通管制通关和映射。 与当地时间不同,UTC 不会随季节变化而变化。 `utc_time.py` ```py #!/usr/bin/python3 import arrow utc = arrow.utcnow() print(utc) print(utc.to('local')) ``` 使用`utcnow()`函数创建 UTC 时间。 ```py print(utc.to('local')) ``` 使用`to()`方法,我们将 UTC 时间转换为本地时间。 ## 当地时间 本地时间是特定区域或时区中的时间。 `local_time.py` ```py #!/usr/bin/python3 import arrow now = arrow.now() print(now) print(now.to('UTC')) ``` 使用`now()`函数创建本地时间。 `to()`方法用于将本地时间转换为 UTC 时间。 ## 解析时间 `get()`方法用于解析时间。 `parse_time.py` ```py #!/usr/bin/python3 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) ``` 该示例从日期和时间字符串以及时间戳解析时间。 ```py $ ./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 秒以来以秒为单位的时间值。 `unix_time.py` ```py #!/usr/bin/python3 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`对象。 ```py date = arrow.Arrow.fromtimestamp(unix_time) ``` 使用`fromtimestamp()`方法,我们将 Unix 时间转换回箭头日期对象。 ```py 2017-09-02T21:57:11.483795+02:00 1504382231 2017-09-02T21:57:11+02:00 ``` 这是输出。 也可以将日期格式化为 Unix 时间。 `format2unix.py` ```py #!/usr/bin/python3 import arrow utc = arrow.utcnow() print(utc.format('X')) ``` 通过将`'X'`说明符传递给`format()`方法,我们将当前本地日期打印为 Unix 时间。 ```py $ ./format2unix.py 1504383196 ``` 这是输出。 ## 格式化日期和时间 日期和时间可以用`format()`方法格式化。 `formatting.py` ```py #!/usr/bin/python3 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()`方法以各种格式显示本地日期和时间。 ```py $ ./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()`方法,我们可以将日期和时间转换为区域时间。 `converting.py` ```py #!/usr/bin/python3 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 时间并将其转换为三个区域时间。 ```py $ ./converting.py 13:24:06 22:24:06 23:24:06 ``` 这是输出。 ## 工作日 可以使用`weekday()`或`format()`方法找到日期的工作日。 `weekday.py` ```py #!/usr/bin/python3 import arrow d1 = arrow.get('1948-12-13') print(d1.weekday()) print(d1.format('dddd')) ``` 该代码示例的工作日为`"1948-12-13"`。 ```py $ ./weekday.py 0 Monday ``` 1948 年 12 月 12 日,是星期一。 ## 移动时间 `shift()`方法用于移动时间。 `shifting.py` ```py #!/usr/bin/python3 import arrow now = arrow.now() print(now.shift(hours=5).time()) print(now.shift(days=5).date()) print(now.shift(years=-8).date()) ``` 该示例计算当前本地时间并将其偏移三倍。 ```py print(now.shift(hours=5).time()) ``` 我们将时间提前了五个小时。 ```py print(now.shift(days=5).date()) ``` 我们将日期提前五天。 ```py print(now.shift(years=-8).date()) ``` 在这里,我们将日期向后移八年。 ```py $ ./shifting.py 03:44:23.100887 2017-09-07 2009-09-02 ``` 这是输出。 ## 夏令时 夏令时(DST)是在夏季的几个月中增加时钟的一种做法,因此晚上的夏时制持续时间更长。 在春季开始时将时间向前调整一小时,在秋季将时间向后调整为标准时间。 `daylightsaving.py.py` ```py #!/usr/bin/python3 import arrow now = arrow.now() print(now.format("YYYY-MM-DD HH:mm:ss ZZ")) print(now.dst()) ``` 该示例使用`dst()`显示夏令时。 ```py $ ./daylightsaving.py 2017-09-02 22:46:37 +02:00 1:00:00 ``` 输出显示本地时间已调整一小时。 ## 人性化的日期和时间 在社交网站上,我们经常可以看到诸如“一个小时前”或“5 分钟前”之类的术语,这些术语可以为人们提供有关帖子创建或修改时间的快速信息。 Arrow 包含`humanize()`方法来创建此类术语。 `humanize.py` ```py #!/usr/bin/python3 import arrow now = arrow.now() d1 = now.shift(minutes=-15).humanize() print(d1) d2 = now.shift(hours=5).humanize() print(d2) ``` 该示例将两个日期人性化。 ```py $ ./humanizing.py 15 minutes ago in 4 hours ``` 这是输出。 在本教程中,我们使用带有箭头模块的 Python 中的日期和时间。 您可能也对以下相关教程感兴趣: [Beautifulsoup 教程](/python/beautifulsoup), [Python 教程](/lang/python/), [Python 列表推导式](/articles/pythonlistcomprehensions/), [OpenPyXL 教程](/articles/openpyxl/),Python Requests 教程和 [Python CSV 教程](/python/csv/)。