Python 时间字符串和时间戳之间的转换
datetime模块中的数据类型
首先我们先了解一下datetime模块中的数据类型
类型 说明
date 以公历形式存储日历日期(年、月、日)
time 将时间存储为时、分、秒、毫秒
datetime 存储日期和时间
timedelta 表示两个datetime值之间的差(日、秒、毫秒)
datetime 格式定义
代码 说明
%Y 4位数的年
%y 2位数的年
%m 2位数的月[01,12]
%d 2位数的日[01,31]
%H 时(24小时制)[00,23]
%l 时(12小时制)[01,12]
%M 2位数的分[00,59]
%S 秒[00,61]有闰秒的存在
%w 用整数表示的星期几[0(星期天),6]
%F %Y-%m-%d简写形式例如,2020-06-27
%D %m/%d/%y简写形式
import time
import datetime
#获取当前日期
now_dateTime=datetime.datetime.now() #获取当前日期 格式:2020-02-06 11:47:36.406318
print("获取当前日期:",now_dateTime)
#将datetime类型转成str类型
#strftime("%Y-%m-%d %H:%M:%S") datetime->str
now_str=now_dateTime.strftime("%Y-%m-%d %H:%M:%S")
print("将datetime类型->str类型",now_str)
#str->dateTime 字符串转成日期datetime
#strptime(str,format)
oneDay_str="2020-2-6 12:1:0"
oneDay_datetime=datetime.datetime.strptime(oneDay_str,"%Y-%m-%d %H:%M:%S")
print("字符串转成日期datetime",oneDay_datetime)
# 获取当前时间时间戳
now_timestamp=time.time()
print("获取当前时间的时间戳",now_timestamp)
#字符串转成时间戳str->timestamp
oneDay_str="2020-2-6 12:1:0"
oneDay_timestamp=time.mktime(time.strptime(oneDay_str,"%Y-%m-%d %H:%M:%S"))
print("字符串转时间戳:",oneDay_timestamp)
#时间戳转成日期 timestamp->datetime
#now_dateTime=datetime.datetime.strptime()
now_dateTime=datetime.datetime.fromtimestamp(now_timestamp)
print("时间戳转成日期:",now_dateTime)
#两个日期差
oneDay_str="2020-2-6 20:30:0"
now_timestamp=time.time()
oneDay_timestamp=time.mktime(time.strptime(oneDay_str,"%Y-%m-%d %H:%M:%S"))
difTime=now_timestamp-oneDay_timestamp
print("时间间隔为:",difTime,"秒")
故此就简单封装一下
import datetime
import time
def get_float_time_stamp():
datetime_now = datetime.datetime.now()
return datetime_now.timestamp()
def get_time_stamp16():
"""获取当前时间转换成16位的时间戳
:return: 返回当前时间戳(16位)
"""
# 生成16时间戳 eg:1597195825782642
datetime_now = datetime.datetime.now()
print(datetime_now)
# 10位,时间点相当于从UNIX TIME的纪元时间开始的当年时间编号
date_stamp = str(int(time.mktime(datetime_now.timetuple())))
# 6位,微秒
data_microsecond = str("%06d" % datetime_now.microsecond)
date_stamp = date_stamp + data_microsecond
return int(date_stamp)
def get_time_stamp13():
"""获取当前时间并转换成13位的时间戳
:return: 返回当前时间戳(13位)
"""
# 生成13时间戳 eg:1597195825782
datetime_now = datetime.datetime.now()
# 10位,时间点相当于从UNIX TIME的纪元时间开始的当年时间编号
date_stamp = str(int(time.mktime(datetime_now.timetuple())))
# 3位,微秒
data_microsecond = str("%06d" % datetime_now.microsecond)[0:3]
date_stamp = date_stamp + data_microsecond
return int(date_stamp)
def stampToTime(stamp):
"""时间戳转换为当前时间格式
如:2020-08-12 09:36:40.604
:param stamp: 时间戳值
:return:
"""
datatime = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(float(str(stamp)[0:10]))) #将指定时间戳转换为其他日期格式(如%Y-%m-%d %H:%M:%S)
datatime = datatime + '.' + str(stamp)[10:]
return datatime