Python最好的时间库, Python时间日期工具, Python处理日期和时间, arrow时间库使用详解, Python Arrow 教程, Python3 Arrow 时间日期增强库

 

Python最好的时间库, Python时间日期工具, Python处理日期和时间, arrow时间库使用详解, Python Arrow 教程, Python3 Arrow 时间日期增强库
Python最好的时间库, Python时间日期工具, Python处理日期和时间, arrow时间库使用详解, Python Arrow 教程, Python3 Arrow 时间日期增强库

 

Arrow 是用于处理日期和时间的 Python 模块。 与内置的日期和时间工具相比,它使创建,操作,格式化和转换日期,时间和时间戳变得更加容易。

 

安装 Arrow

Arrow 模块使用以下命令安装:

sudo pip3 install arrow

我们使用pip3命令安装arrow模块。

 

UTC 时间

实际需要一个全球时间。 全球时间可以避免时区和夏令时的混淆。 UTC(世界标准时间)是主要时间标准。 UTC 用于航空,天气预报,飞行计划,空中交通管制通关和映射。 与当地时间不同,UTC 不会随季节变化而变化。

 

utc_time.py

#!/usr/bin/python3

import arrow

utc = arrow.utcnow()
print(utc)
print(utc.to('local'))

 

使用utcnow()功能创建 UTC 时间。

print(utc.to('local'))

使用to()方法,我们将 UTC 时间转换为本地时间。

 

当地时间

本地时间是特定区域或时区中的时间。

local_time.py

#!/usr/bin/python3

import arrow

now = arrow.now()
print(now)
print(now.to('UTC'))

使用now()功能创建本地时间。 to()方法用于将本地时间转换为 UTC 时间。

 

解析时间

get()方法用于解析时间。

parse_time.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)

该示例从日期和时间字符串以及时间戳解析时间。

$ ./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

#!/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 对象。

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 时间。

format2unix.py

#!/usr/bin/python3

import arrow

utc = arrow.utcnow()

print(utc.format('X'))

通过将'X'说明符传递给format()方法,我们将当前本地日期打印为 Unix 时间。

$ ./format2unix.py 
1504383196

这是输出。

 

格式化日期和时间

日期和时间可以用format()方法格式化。

formatting.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()方法以各种格式显示本地日期和时间。

$ ./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

这是输出。

 

>>> a = arrow.now()
>>> a
<Arrow [2016-07-04T20:17:09.633154+08:00]>
>>> a.timestamp
1467634629
>>> a.year
2016
>>> a.month
7
>>> a.day
4
>>> a.hour
20
>>> a.minute
17
>>> a.second
9
>>> a.microsecond
633154
>>> a.week
27

 

转换为区域时间

使用to()方法,我们可以将日期和时间转换为区域时间。

converting.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 时间并将其转换为三个区域时间。

$ ./converting.py 
13:24:06
22:24:06
23:24:06

这是输出。

 

now = arrow.now()

print(now.format("YYYY-MM-DD hh:mm:ss"))  # 2021-08-23 10:11:04
now_utc = now.to("utc")
print(now_utc.format("YYYY-MM-DD hh:mm:ss"))  # 2021-08-23 02:11:04
now1 = now.replace(day=31, hour=12)
print(now1.format("YYYY-MM-DD hh:mm:ss"))  # 2021-08-31 12:11:04
now2 = now.shift(months=-2)
print(now2.format("YYYY-MM-DD hh:mm:ss"))  # 2021-06-23 10:11:04

我们可以使用to()方法切换时区,使用replace()方法修改时间,使用shift()进行时间的前后推移。

同Python内置日期datetime库一样,arrow对象也支持时间的大小对比,还有计算时间差操作,除此之外,还有很多意想不到的操作,感兴趣的话,可以查看官方文档

 

工作日

可以使用weekday()format()方法找到日期的工作日。

weekday.py

#!/usr/bin/python3

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()方法用于移动时间。shift 有点像游标卡尺,可以左右两边进行加减移位操作,加减的对象可以是年月日时分秒和星期。

shifting.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())

该示例计算当前本地时间并将其偏移三倍。

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

这是输出。

 

替换时间

replace(**kwargs) 替换某个时间区域

arw = arrow.utcnow()
>>> arw
<Arrow [2013-05-11T22:27:34.787885+00:00]>
>>> arw.replace(year=2014, month=6)
<Arrow [2014-06-11T22:27:34.787885+00:00]>

 

需要注意的是replace()方法是产生一个新的arrow对象,所以原来的a没变,另外注意hourhours的区别,前者是设置时间,取值为0-23,而后者是在原来时间的基础上加减,取值可正可负。

 

夏令时

夏令时(DST)是在夏季的几个月中增加时钟的一种做法,因此晚上的夏时制持续时间更长。 在春季开始时将时间向前调整一小时,在秋季将时间向后调整为标准时间。

daylightsaving.py.py

#!/usr/bin/python3

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()方法来创建此类术语。

humanize.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)

该示例将两个日期人性化。

$ ./humanizing.py 
15 minutes ago
in 4 hours

这是输出。

 

Tokens

Token Output
Year YYYY 2000, 2001, 2002 … 2012, 2013
YY 00, 01, 02 … 12, 13
Month MMMM January, February, March …
MMM Jan, Feb, Mar …
MM 01, 02, 03 … 11, 12
M 1, 2, 3 … 11, 12
Day of Year DDDD 001, 002, 003 … 364, 365
DDD 1, 2, 3 … 4, 5
Day of Month DD 01, 02, 03 … 30, 31
D 1, 2, 3 … 30, 31
Day of Week dddd Monday, Tuesday, Wednesday …
ddd Mon, Tue, Wed …
d 1, 2, 3 … 6, 7
Hour HH 00, 01, 02 … 23, 24
H 0, 1, 2 … 23, 24
hh 01, 02, 03 … 11, 12
h 1, 2, 3 … 11, 12
AM / PM A AM, PM
a am, pm
Minute mm 00, 01, 02 … 58, 59
m 0, 1, 2 … 58, 59
Second ss 00, 01, 02 … 58, 59
s 0, 1, 2 … 58, 59
Sub-second SSS 000, 001, 002 … 998, 999
SS 00, 01, 02 … 98, 99
S 0, 1, 2 … 8, 9
Timezone ZZ -07:00, -06:00 … +06:00, +07:00
Z -0700, -0600 … +0600, +0700
Timestamp X 1381685817

 

API Guide

 

其他相关文章

 

在本教程中,我们使用带有 Arrow 模块的 Python 中的日期和时间。

 

 

本文:Python最好的时间库, Python时间日期工具, Python处理日期和时间, arrow时间库使用详解, Python Arrow 教程, Python3 Arrow 时间日期增强库

 

Add a Comment

Your email address will not be published.

Time limit is exhausted. Please reload CAPTCHA.