本文主要参考了 https://dvel.me/posts/datetime-note/ 感谢原作者,请感兴趣的同学移步该链接查看详细内容
做数据开发的时候遇到一个unixtime与datetime互转的小问题:即将形如
2022-06-19 12:39:07
转换为
1655613547
以及相反过程。经过查阅相关资料后,总结了两个转换函数:
import time
def datetime_to_unixtime(datetime: str):
return int(time.mktime(time.strptime(datetime, '%Y-%m-%d %H:%M:%S')))
def unixtime_to_datetime(unixtime: int):
return time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(unixtime))
# 网上有的中文博客使用 time.gmtime(),注意 gmtime 转出来的是 UTC+0
但在第二遍看自己写的代码时忽然发现,为什么unixtime->datetime有时区因素(time.localtime函数)而相反的过程却不用考虑时区呢?于是在最上方的链接中得知:
unixtime是默认零时区的
这样就存在一个隐患:在业务系统中如果使用了unixtime,必须同时明文约定转换规则,否则可能出现时区偏差。