python之datetime模块

  1. 初识time
  2. 初识datetime
  3. 计算两个时间点之间相差多少天、小时、分、秒

1、初识time

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
import time

# 获取当前时间的时间戳,python中时间戳整数位是秒数,Java和JavaScript中整数位是毫秒数
t1 = time.time()
print(t1)
# 输出:1610114801.1910043

# 将时间戳转换为当前时区的struct_time,gmtime()方法将一个时间戳转为UTC时区(0时区)的struct_time
# tm_wday:0-6(0表示周1),tm_yday(一年中的第几天),tm_isdst:夏令时
t2 = time.localtime(t1)
print(t2)
# 输出:time.struct_time(tm_year=2021, tm_mon=1, tm_mday=8, tm_hour=22, tm_min=6, tm_sec=41, tm_wday=4, tm_yday=8, tm_isdst=0)

# 将一个struct_time 转为时间戳
t3 = time.mktime(t2)
print(t3)
# 输出:1610114801.0

# 将一个代表时间的元组或者strut_time 转为 格式化的字符串
t4 = time.strftime('%Y-%m-%d %X', time.localtime())
print(t4)
# 输出:2021-01-08 22:06:41

# 将一个格式化的字符串转为 strut_time
t5 = time.strptime(t4, '%Y-%m-%d %X')
print(t5)
# 输出:time.struct_time(tm_year=2021, tm_mon=1, tm_mday=8, tm_hour=22, tm_min=6, tm_sec=41, tm_wday=4, tm_yday=8, tm_isdst=-1)

2、初识datetime

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
from datetime import datetime,timedelta

# 获取当前日期和时间
dt1 = datetime.now()
print(dt1)
# 输出:2021-01-08 21:30:19.164887

# 当前时间去掉毫秒数
print(datetime.now().replace(microsecond=0))
# 输出:2021-01-08 21:30:19

# 获取指定日期和时间
dt2 = datetime(2021,3,4,11,15,54)
print(dt2)
# 输出:2021-03-04 11:15:54

# datetime 转为 timestamp
ts = dt2.timestamp()
print(ts)
# 输出:1614827754.0

# timestamp 转为 datetime
dt3 = datetime.fromtimestamp(ts)
print(dt3)
# 输出:2021-03-04 11:15:54

# str 转为 datetime
dt4 = datetime.strptime('2021-9-23 18:46:34', '%Y-%m-%d %H:%M:%S')
print(dt4)
# 输出:2021-09-23 18:46:34

# datetime 转为 str
dt5 = dt4.strftime('%Y-%m-%d %H:%M:%S')
print(dt5)
# 输出:2021-09-23 18:46:34

# datetime 加减
dt6 = dt1 + timedelta(days=1,hours=1,minutes=1,seconds=1)
print(dt6)
# 输出:2021-01-09 22:31:20.164887

3、计算两个时间点之间相差多少天、小时、分、秒

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
from datetime import datetime

start_time = '2020-12-14 09:13:44'
# 获得datetime类型的当前时间作为结束时间
end_time = datetime.now().replace(microsecond=0)
# 将开始时间转为datetime
start_time1 = datetime.strptime(start_time, '%Y-%m-%d %H:%M:%S')
# 获得两个日期之间相差的秒数
seconds = (end_time-start_time1).total_seconds()
if seconds<0:
seconds = -seconds
# 根据相差的秒数转换成天、小时、分钟、秒
str_day = str(seconds // 86400)[:-2]
str_hours = str((seconds % 86400) // 3600)[:-2]
str_minute = str(((seconds % 86400) % 3600) // 60)[:-2]
str_seconds = str(((seconds % 86400) % 60) % 60)[:-2]
# 打印
print('开始时间:' + str(start_time1))
print('结束时间:' + str(end_time))
print('相差:' + str_day + '天' + str_hours + '小时'+ str_minute + '分钟' + str_seconds+ '秒')

'''
输出:
开始时间:2020-12-14 09:13:44
结束时间:2021-01-08 22:10:30
相差:25天12小时56分钟46秒
'''
------------- End -------------