从mysql上解决:
https://zhuanlan.zhihu.com/p/386702884?hmsr=toutiao.io&utm_campaign=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io
datetime库:
https://zhuanlan.zhihu.com/p/380567075
https://zhuanlan.zhihu.com/p/365599446
从时间戳到北京时间:
从北京时间到时间戳:
时间库的详述 记录了time datetime pytz arrow等几个
多种时间模块都可以进行时间的处理,比如time 模块
模块涉及的对象time.struct_time类型,
print(time.localtime(),type(time.localtime()))
格式如下:
time.struct_time(tm_year=2023, tm_mon=7, tm_mday=6, tm_hour=13, tm_min=45, tm_sec=4, tm_wday=3, tm_yday=187, tm_isdst=0) <class 'time.struct_time'>
time中涉及的变换有以下四种:
- 由时间戳到struct localtime或者gmtime
- 由struct转化为时间戳:mktime
- 由struct到格式化的时间 strftime # format 格式化时间
- 把格式化时间转化为struct strptime
都要以struct_time作为中介
本地时间偏移:
time.timezone 这是本地时间相对于UTC时间偏移的秒数,在东八区就要偏移8*3600,值为-28800
记录一个函数用于表示收到一个北京时间的格式化时间,将这个时间记录为时间戳
import time
# 由于输入时间为北京时间,本地并非北京时间,需要将输入时间转换为时间戳,
def timebeijing_timestrap(formatTime):
time_struct = time.strptime(formatTime,"%Y-%m-%d %H:%M:%S")
timezone_local = time.timezone
timezone_source = -28800
timestrap = time.mktime(time_struct)
timestrap_real = timestrap-timezone_local+timezone_source
#timestrap_real = timestrap + timezone_source
return timestrap_real
# 思考:东八区的时间比格林威治时间多8小时,如果基于本地时间计算本地时间对应的时间戳是加上timezone的,
# 如果是在其他时区的系统上计算东八区的时间,就要考虑到本地电脑的timezone,因为在计算时间戳时已经加过本地的 timezone了
# 所以计算北京时间对应的时间戳时要先减去这个值,再加上源头北京时间对应的timezone
记录各种时间类型的相互转换的使用方式:
import time
time.time()
# 转换为struct_time
struct_time = time.localtime(time.time())
format_time = time.strftime("%Y-%m-%d %H:%M:%S")
print(format_time)
struct_time2 = time.strptime(format_time,"%Y-%m-%d %H:%M:%S")
print(struct_time2)
# 转换为时间戳
print(time.mktime(struct_time2))