Python实现互转:时间戳和字符串
后台开发经常需要对时间进行记录和返回时间戳给前端。
为了通用性,我们一般都会存储UTC的时间戳。
但是,一般对数据库进行时间戳字段的插入,往往是以格式化的时间字符串进行插入的,例如:1
insert into table_name(user_id, login_time) values ("RidingRoad", "2018-11-13 12:19:39");
业务场景
假如前端传来了用户的某个UTC时间戳,后台需要录入数据库,当前端请求时候,返回这个UTC时间戳。
业务分析
这个UTC时间戳的状态变化:
- 前端传过来的:double型的时间戳
- 插入数据库时:格式化的时间字符串
- 返回给前端的:double型的时间戳
所以我们需要一个对时间和格式化的时间字符串进行转换的函数转换实现
1
2
3
4
5
6
7
8
9
10import time
# UTC 转换为 格式化的时间字符串
def u2s(utc_timestamp):
return time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime(utc_timestamp))
# 格式化的时间字符串 转换为 UTC
def s2u(utc_time_string):
return time.mktime(time.strptime(utc_time_string, "%Y-%m-%d %H:%M:%S"))\
- time.mktime(time.gmtime(0))
效果展示
1 | if __name__ == "__main__": |
结果输出
两个时间戳的误差在零点毫秒级,前后的日期格式字符串一样,一般的业务可以接受这样的误差。有更精准的方法,下面评论告诉我吧。1
2
3
41542112115.95
2018-11-13 12:28:35
1542112115.0
2018-11-13 12:28:35
Python全面学习资料
公众号“Python孙行者”后台回复“电子书“即可