arrow模块需要安装
pip install arrow
1.获取时间
1.1 获取世界标准时间
import arrow
utc = arrow.utcnow()
print(utc)
result:
2021-09-19T02:56:00.435537+00:00
1.2 获取本地时间
utc = arrow.now()
print(utc)
result:
2021-09-19T10:57:07.648653+08:00
1.3 获取指定时区的时间
utc = arrow.now('Asia/Shanghai')
print(utc)
result:
2021-09-19T10:58:44.183601+08:00
2.arrow对象
2.1将时间戳转化为arrow对象
2.1.1 int类型
print(arrow.get(1519534533))
result:
2018-02-25T04:55:33+00:00
2.1.2 float类型
print(arrow.get(1519534533.9999))
result:
2018-02-25T04:55:33.999900+00:00
2.2 将字符串转换为arrow对象
2.2.1 格式化转换
print(arrow.get('2018-02-24 12:30:45', 'YYYY-MM-DD HH:mm:ss'))
result:
2018-02-24T12:30:45+00:00
2.2.2 遵循ISO-8601的字符串不需要格式字符串参数即可转换
print(arrow.get('2018-02-24T13:00:00.000-07:00'))
result:
2018-02-24T13:00:00-07:00
2.2.3 从字符串中通过格式参数搜索时间
print(arrow.get('June was born in May 1980', 'MMMM YYYY'))
result:
1980-05-01T00:00:00+00:00
2.3 通过时间元组进行创建
2.3.1 通过arrow.get()方法创建
print(arrow.get(2018, 2, 24))
result:
2018-02-24T00:00:00+00:00
2.3.2 通过arrow.Arrow()方法创建
print(arrow.Arrow(2018, 2, 24))
result:
2018-02-24T00:00:00+00:00
3.arrow对象的使用
3.1 datetime属性
3.1.1 获取datetime时间
import arrow
a = arrow.now()
print(a.datetime)
result:
2021-09-19 11:37:57.579250+08:00
3.1.2 获取datetime对象的值
(1)获取年
import arrow
a = arrow.now()
print(a.year)
result:
2021
(2)获取月份
print(a.month)
result:
9
(3)获取天
print(a.day)
result:
11
(4)获取小时
print(a.hour)
result:
11
(5)获取分钟
print(a.minute)
result
59
(6)获取秒
print(a.second)
result:
40
3.2 timestamp属性
import arrow
a = arrow.now()
print(a.timestamp())
result:
1632022941.547921
3.3 naive属性
import arrow
a = arrow.now()
print(a.naive)
result:
2021-09-19 11:43:09.433313
3.4 tzinfo属性
import arrow
a = arrow.now()
print(a.tzinfo)
result:
tzlocal()
3.5 时间推移
shift方法获取某个时间之前或之后的时间,关键字参数为years,months,weeks,days,hours,seconds,microseconds
3.5.1 三周后
import arrow
a = arrow.now()
print(a.shift(weeks=+3))
result:
2021-10-10T17:28:38.732386+08:00
3.5.2 一天前
print(a.shift(days=-1))
result:
2021-09-18T17:29:50.325986+08:00
3.5.3 距离最近的星期日
print(a.shift(weekday=6))
result:
2021-09-19T17:31:21.434495+08:00
这里weekday的取值从0到6
3.6 时间替换
import arrow
a = arrow.now()
print(a.replace(hour=9))
result:
2021-09-19T09:32:53.750634+08:00
这是将当前时间的小时替换为9,其余年月日、分和秒把持不变
3.7 时间区间和范围
3.7.1 获取所在的时间区间
import arrow
a = arrow.now()
print(a.span('hour'))
result:
(<Arrow [2021-09-19T17:00:00+08:00]>, <Arrow [2021-09-19T17:59:59.999999+08:00]>)
3.7.2 获取所在的时间区间的开始时间
print(a.floor('hour'))
result:
2021-09-19T17:00:00+08:00
3.7.3 获取所在的时间区间的结束时间
print(a.ceil('hour'))
result:
2021-09-19T17:59:59.999999+08:00
3.7.4 循环获取时间区间
start = arrow.Arrow(2018, 2, 24, 12, 30)
end = arrow.Arrow(2018, 2, 24, 15, 20)
for r in arrow.Arrow.span_range('hour', start, end): #获取start,end之间的时间区间
print(r)
result:
(<Arrow [2018-02-24T12:00:00+00:00]>, <Arrow [2018-02-24T12:59:59.999999+00:00]>)
(<Arrow [2018-02-24T13:00:00+00:00]>, <Arrow [2018-02-24T13:59:59.999999+00:00]>)
(<Arrow [2018-02-24T14:00:00+00:00]>, <Arrow [2018-02-24T14:59:59.999999+00:00]>)
(<Arrow [2018-02-24T15:00:00+00:00]>, <Arrow [2018-02-24T15:59:59.999999+00:00]>)
3.7.4 循环获取获取间隔单位时间的时间
for r in arrow.Arrow.range('hour',start,end): #获取间隔单位时间的时间
print(r)
result:
2018-02-24T12:30:00+00:00
2018-02-24T13:30:00+00:00
2018-02-24T14:30:00+00:00
3.8 其他属性
3.8.1 ctime格式的日期
import arrow
print(a.format('YYYY-MM-DD HH:mm:ss'))
print(a.ctime())
result:
Sun Sep 19 18:04:49 2021
3.8.2 以整数形式返回星期几(0-6)
print(a.weekday())
result:
6
3.8.3 以整数形式返回一周中的ISO日(1-7)
print(a.isoweekday())
result:
7
3.8.4 返回3元组(ISO年,ISO周数,ISO工作日)
print(a.isocalendar())
result:
(2021, 37, 7)
3.8.5 返回日期的格雷戈里序数
print(a.toordinal())
result:
738052
4.arrow对象的输出
4.1 格式化输出
import arrow
a = arrow.now()
print(a.format('YYYY-MM-DD HH:mm:ss'))
result:
2021-09-19 18:04:49
4.2 人性化输出
4.2.1 相对于当前时间
import arrow
present = arrow.utcnow()
past = present.shift(hours=-1)
print(past.humanize())
result:
an hour ago
4.2.2 相对于参数时间
import arrow
present = arrow.utcnow()
past = present.shift(hours=-1)
future = present.shift(hours=2)
print(future.humanize(past))
result:
in 3 hours
4.2.3 指定地区语言
import arrow
present = arrow.utcnow()
past = present.shift(hours=-1)
print(past.humanize(present, locale='zh'))
result:
1小时前