python time, datetime 各种时间格式转换
记录python中time,datetime模块,常用的时间格式转换。
一、time模块
1. 获取当前时间
import time
now = time.localtime()
print(time.strftime("%Y-%m-%d %H:%M:%S",now))
now
运行结果:
2022-09-08 14:40:44
time.struct_time(tm_year=2022, tm_mon=9, tm_mday=8, tm_hour=14, tm_min=40, tm_sec=44, tm_wday=3, tm_yday=251, tm_isdst=0)
改变时间显示格式:
time.strftime("%Y%m%d")
运行结果:
'20220908'
2. 获取当前时间戳
timestamp = time.time()
timestamp
运行结果:
1662620870.4264786
3. 时间戳转日期
timestamp = 1662620870
time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(timestamp))
运行结果:
'2022-09-08 15:07:50'
4. 日期转时间戳
date = "2022-09-08 15:07:50"
timeArray = time.strptime(date, "%Y-%m-%d %H:%M:%S")
timestamp = int(time.mktime(timeArray))
timestamp
运行结果:
1662620870
5. 计算时间差
import time
start = time.time()
print("start time: ",time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(start)))
time.sleep(5)
end = time.time()
print("end time: ",time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(end)))
time_diff = int(end - start)
print(f"time diff: {time_diff} s")
运行结果:
start time: 2022-09-08 15:15:45
end time: 2022-09-08 15:15:50
time diff: 5 s
二、datetime模块
1. 获取当前时间
import datetime
now = datetime.datetime.now()
print(now.strftime("%Y-%m-%d %H:%M:%S"))
now
运行结果:
2022-09-08 15:28:24
datetime.datetime(2022, 9, 8, 15, 28, 24, 78075)
或者
today = datetime.datetime.today()
today
运行结果:
datetime.datetime(2022, 9, 8, 15, 29, 20, 337346)
2. 获取当前时间戳
now = datetime.datetime.now()
now.timestamp()
运行结果:
1662622212.511335
或者
import time
import datetime
now = datetime.datetime.now()
timestamp = time.mktime(now.timetuple())
timestamp
运行结果:
1662622618.0
3. 时间戳转日期
timestamp = 1662622618
date = datetime.datetime.fromtimestamp(timestamp)
date.strftime("%Y-%m-%d %H:%M:%S")
运行结果:
'2022-09-08 15:36:58'
4. 日期转时间戳
date = "2022-09-08 15:36:58"
datetime.datetime.strptime(date, "%Y-%m-%d %H:%M:%S").timestamp()
运行结果:
1662622618.0
5. 计算时间差
import time
import datetime
start = datetime.datetime.now()
print("start time: ", start)
time.sleep(5)
end = datetime.datetime.now()
print("end time: ", end)
time_diff = (end - start).seconds
print(f"time diff: {time_diff} s")
运行结果:
start time: 2022-09-08 15:54:17.616968
end time: 2022-09-08 15:54:22.633349
time diff: 5 s
6. 当前时间,向前/向后N天
N = 2 # 前N天
date = "20220908"
last_N_day = datetime.datetime.strptime(date, "%Y%m%d") - datetime.timedelta(days=N)