python包arrow时间操作

8/7/2023 python
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import arrow

# 获取当前时间arrow对象
now = arrow.now()
# now=2019-03-21T16:30:29.564817+08:00
print('now=%s' % now)

# 获取当前时间arrow对象,是区划
utcnow = arrow.utcnow()
# utcnow=2019-03-21T08:30:29.564817+00:00
print('utcnow=%s' % utcnow)

# str转换为arrow对象
# 2019-03-21T16:00:00+00:00
print(arrow.get('2019-03-21 16:00:00', 'YYYY-MM-DD HH:mm:ss'))
# 这种情况,不会截取16,默认为0点,2019-03-21T00:00:00+00:00
print(arrow.get('2019-03-21 16:00:00', 'YYYY-MM-DD'))
# 2019-03-21默认为00:00:00
print(arrow.get('2019-03-21', 'YYYY-MM-DD'))
# 遵循ISO-8601的字符串不需要格式字符串参数即可转换
print(arrow.get('2018-02-24T13:00:00.000-07:00'))
# 错误!!
# print(arrow.get('2019-03-21', 'YYYY-MM-DD HH:mm:ss'))


# arrow对象转换时间戳,秒级
print(arrow.now().timestamp)
print(arrow.get('2019-03-21 16:00:00', 'YYYY-MM-DD HH:mm:ss').timestamp)

# arrow对象转换成str
print(arrow.now().format('YYYY-MM-DD HH:mm:ss ZZ'))

# 时间戳转换arrow对象
# 如果传递一串数字,默认为时间戳,时间戳转换arrow对象
print(arrow.get('1519534533.1'))
print(arrow.get(1519534533.1))

# 设置年月日时分秒来创建arrow对象
print(arrow.get(2019, 3, 21, 16, 45, 30))

# 通过arrow获取datetime对象
dt = arrow.get('2019-03-21 16:00:00', 'YYYY-MM-DD HH:mm:ss').datetime
print(dt.strftime('%Y-%m-%d %H:%M:%S'))

es = arrow.get('2019-03-21 16:22:33', 'YYYY-MM-DD HH:mm:ss')
# 年
print(es.year)
# 月
print(es.month)
# 日
print(es.day)
# 时
print(es.hour)
# 分
print(es.minute)
# 秒
print(es.second)

ex = arrow.get('2019-03-21 16:53:31', 'YYYY-MM-DD HH:mm:ss')
# 1年前
print(ex.shift(years=-1))
# 1年后
print(ex.shift(years=1))

# 13个月前
print(ex.shift(months=-13))
# 13个月后
print(ex.shift(months=13))

# 31天前
print(ex.shift(days=-31))
# 31天后
print(ex.shift(days=31))

# 25小时前
print(ex.shift(hours=-25))
# 25小时后
print(ex.shift(hours=25))

# 61分钟前
print(ex.shift(minutes=-61))
# 61分钟后
print(ex.shift(minutes=61))

ex = arrow.get('2019-02-27 16:53:31', 'YYYY-MM-DD HH:mm:ss')
# 每个月1号
print(ex.format('YYYY-MM-01'))
print(ex.format('YYYY-MM-01 HH:mm:ss'))
# 每个月最后一天
str_format = ex.shift(months=1).format('YYYY-MM-01')
print(arrow.get(str_format).shift(days=-1))

exam01 = arrow.get('2019-02-27 16:53:31', 'YYYY-MM-DD HH:mm:ss')
exam02 = arrow.get('2018-02-27 16:53:21', 'YYYY-MM-DD HH:mm:ss')
diff = exam01 - exam02
# 365 days, 0:00:00
print(type(diff))  # <class 'datetime.timedelta'>
# 获取相差的天数
print(diff.days)
# 获取相差的秒数
print(diff.total_seconds())
# 仅仅取两个时间的秒位数之差10
print(diff.seconds)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
Last Updated: 6/1/2024, 6:36:28 AM