Python 时间戳与字符串之间的相互转换(解决1970年之前的时间转换)
1.字符串转换时间戳
字符串转换时间戳 str_time_trans_timestamp
参数 | 说明 | 默认 |
---|---|---|
my_time/ | 要转换的时间字符串 | |
format_type | 传入时间my_time的格式 | %Y%m%d |
timestamp_type | 时间戳类型,毫秒或秒 | ms(毫秒) |
import time
from datetime import datetime
utc_time = datetime.strptime("1970-01-01 08:00:00", '%Y-%m-%d %H:%M:%S')
def str_time_trans_timestamp(my_time: str, format_type='%Y%m%d', timestamp_type='ms'):
data = {"success": True, "data": None, 'message': None}
try:
my_utc_time = datetime.strptime(str(my_time), format_type)
differ = my_utc_time - utc_time # 两个日期的 时间差
if timestamp_type == 'ms':
timestamp = (differ.days * 24 * 3600 + differ.seconds) * 1000 # 此处换算成毫秒
else:
timestamp = (differ.days * 24 * 3600 + differ.seconds) # 此处换算成秒
data['data'] = int(timestamp)
data['mesage'] = '{} 与 1970-01-01-08:00:00 相差约{}天'.format(my_utc_time, abs(differ.days))
except Exception as e:
data['success'] = False
data['message'] = str(e)
return data
2.时间戳转换字符串
时间戳转换字符串 timestamp_trans_str_time
参数 | 说明 | 默认 |
---|---|---|
my_timestamp/ | 要转换的时间戳 | |
format_type | 转换成功后的日期格式 | %Y%m%d |
timestamp_type | 时间戳类型,毫秒或秒 | ms(毫秒) |
import time
from datetime import datetime
utc_time = datetime.strptime("1970-01-01 08:00:00", '%Y-%m-%d %H:%M:%S')
def timestamp_trans_str_time(my_timestamp: int, format_type='%Y%m%d', timestamp_type='ms'):
data = {"success": True, "data": None, 'message': None}
try:
if timestamp_type == 'ms':
time_array = time.localtime((float(abs(my_timestamp)) / 1000))
else:
time_array = time.localtime((abs(my_timestamp)))
str_time = time.strftime(format_type, time_array)
if my_timestamp < 0:
my_utc_time = datetime.strptime(time.strftime('%Y-%m-%d %H:%M:%S', time_array), '%Y-%m-%d %H:%M:%S')
str_time = (utc_time - my_utc_time + utc_time).strftime(format_type)
data['data'] = str_time
except Exception as e:
data['success'] = False
data['message'] = str(e)
return data