在将数据存储于MySQL、Oracle等时,对时间的操作会比较频繁,比如,数据第一次保存于数据库的时间(create_time),数据的更新时间(update_time),查询某个时间等等。在对时间进行操作时,往往会涉及到时间、日期、时间戳之间的各种转换,下面简单介绍几个常用的转换方法。
1、用到的模块
用到的模块有两个:time模块和datetime模块
import time,datetime
2、获取不同要求的时间(字符串格式)
from datetime import datetime, timedelta
today = datetime.now() # 今天
yesterday = today - timedelta(days=1) # 昨天
last_year_today = datetime(today.year - 1, today.month, today.day) # 去年今天
if today.month == 1:
last_month_today = datetime(today.year - 1, 12, today.day, ) # 上月今日
else:
last_month_today = datetime(today.year, today.month - 1, today.day, ) # 上月今日
print(f'当前时间是:{today}')
print(f'昨天当前时间是:{yesterday}')
print(f'去年今天是:{last_year_today}')
print(f'上月今日是:{last_month_today}')
运行结果:
当前时间是:2022-03-06 17:18:06.242593
昨天当前时间是:2022-03-05 17:18:06.242593
去年今天是:2021-03-06 00:00:00
上月今日是:2022-02-06 00:00:00
3、str-->时间戳
import time
nowTime = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
print(f'字符类型的当前时间为:{nowTime}')
# 转为时间数组
nowTimeArray = time.strptime(nowTime, "%Y-%m-%d %H:%M:%S")
print(f'数组类型的当前时间为:{nowTimeArray}')
# 转为秒级时间戳
nowTimeStamp = str(int(time.mktime(nowTimeArray)))
print(f'时间戳类型的当前时间为:{nowTimeStamp}')
运行结果:
字符类型的当前时间为:2022-03-06 17:31:20
数组类型的当前时间为:time.struct_time(tm_year=2022, tm_mon=3, tm_mday=6, tm_hour=17, tm_min=31, tm_sec=20, tm_wday=6, tm_yday=65, tm_isdst=-1)
时间戳类型的当前时间为:1646559080
4、原始时间戳-->秒级、毫秒级、微秒级时间戳
import time
nowTimeStamp = time.time() # 原始时间数据
sNowTimeStamp = int(nowTimeStamp) # 秒级时间戳
msNowTimeStamp = int(round(nowTimeStamp * 1000)) # 毫秒级时间戳
micNowTimeStamp = int(round(nowTimeStamp * 1000000)) # 微秒级时间戳
print(f'原始时间戳为:{nowTimeStamp}')
print(f'秒级时间戳为:{sNowTimeStamp}')
print(f'毫秒级时间戳为:{msNowTimeStamp}')
print(f'微秒级时间戳为:{micNowTimeStamp}')
运行结果:
原始时间戳为:1646559080.6776936
秒级时间戳为:1646559080
毫秒级时间戳为:1646559080678
微秒级时间戳为:1646559080677694
5、更改str类型日期的显示格式
tss2 = "2022-03-06 23:40:00"
# 将字符串格式的时间转为数组
timeArray = time.strptime(tss2, "%Y-%m-%d %H:%M:%S")
# 转为其它显示格式
otherStyleTime = time.strftime("%Y/%m/%d %H:%M:%S", timeArray)
print(otherStyleTime) # 2022/03/06 23:40:00
tss3 = "2022/03/06 23:40:00"
timeArray = time.strptime(tss3, "%Y/%m/%d %H:%M:%S")
# 将字符串格式的时间转为数组
otherStyleTime = time.strftime("%Y-%m-%d %H:%M:%S", timeArray)
print(otherStyleTime) # 2022-03-06 23:40:00
6、时间戳转换为指定格式的日期
import datetime
import time
# 使用time模块实现
timeStamp = int(time.time()) # 当前时间的秒级时间戳
timeArray = time.localtime(timeStamp)
otherStyleTime = time.strftime("%Y--%m--%d %H:%M:%S", timeArray)
print(otherStyleTime) # 2022--03--06 17:37:31
# 使用datetime模块实现
timeStamp = int(time.time()) # 当前时间的秒级时间戳
dateArray = datetime.datetime.fromtimestamp(timeStamp)
otherStyleTime = dateArray.strftime("%Y--%m--%d %H:%M:%S")
print(otherStyleTime) # 2022--03--06 17:37:31