时间戳与本地时间的转换

从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))
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值