Python 时间戳与字符串之间的相互转换(解决1970年之前的时间转换)

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
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值