Python中生成Epoch的方法

发布时间 - 2026-01-11 00:50:06    点击率:

在Python2中datetime对象没有timestamp方法,不能很方便的生成epoch,现有方法没有处理很容易导致错误。关于Epoch可以参见时区与Epoch

0 Python中生成Epoch

from datetime import datetime
# python3
datetime.now().timestamp()
# python2
import time
time.mktime(datetime.now().timetuple()) # 为了兼容python2和3,该用法使用更广泛

1 错误代码

from datetime import datetime
import pytz
aware_date = datetime.utcnow().replace(tzinfo=pytz.utc)
time.mktime(aware_date.timetuple()) # bug here

2 原因

Python中的datetime对象分为带时区信息和不带时区信息的两种对象即naive和aware对象。在处理naive时,一切皆默认为系统时区,没有任何问题。

在Python3中执行timestamp时对于naive对象,按照默认时区处理(调用time.mktime),而aware对象,则带上时区计算与UTC基准时间的间隔秒数得到,也就是将时区信息考虑在内。

而Python2和3中的timetuple方法,返回的结果没有包含时区信息,也没有进行时区转换。即调用timetuple对于aware日期对象而言,时区信息被丢弃,因此再调用time.mktime将得到一个错误的结果

3 解决办法

1、方法一:将其他时区的aware日期,转换为当前系统默认的时区的aware对象, 由于与系统时区一致,因此该aware对象与无时区的naive对象执行timetuple的效果一样。

转换时区参见timezone,即调用astimezone方法,参数为转换后的时区(tzinfo实例)

由于Python2中缺失tzinfo(抽象基类)的各个时区实例,需要自己构造时区对象。
时区实例可以参考官方文档的实现datetime或使用推荐的第三方库pytz

2、方法二:计算时间差

 _EPOCH = datetime(1970, 1, 1, tzinfo=pytz.utc) # 第三方库 pytz
  (aware_date - _EPOCH).total_seconds()

以上这篇Python中生成Epoch的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。


# python  # epoch  # 通过代码实例展示Python中列表生成式的用法  # 浅谈Python中列表生成式和生成器的区别  # python生成器的使用方法  # Python生成器(Generator)详解  # 给大家  # 第三方  # 没有任何  # 两种  # 将其  # 很容易  # 希望能  # 这篇  # 不带  # 转换为  # 解决办法  # 很方便  # 小编  # 大家多多  # 默认为  # 一切皆  # 错误代码  # 文档 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 网站页面设计需要考虑到这些问题  如何在沈阳梯子盘古建站优化SEO排名与功能模块?  EditPlus 正则表达式 实战(3)  Laravel如何实现API版本控制_Laravel API版本化路由设计策略  使用PHP下载CSS文件中的所有图片【几行代码即可实现】  公司网站制作需要多少钱,找人做公司网站需要多少钱?  SQL查询语句优化的实用方法总结  如何在七牛云存储上搭建网站并设置自定义域名?  Laravel如何升级到最新版本?(升级指南和步骤)  如何快速生成凡客建站的专业级图册?  Android GridView 滑动条设置一直显示状态(推荐)  Laravel如何处理异常和错误?(Handler示例)  Laravel如何实现本地化和多语言支持_Laravel多语言配置与翻译文件管理  Gemini手机端怎么发图片_Gemini手机端发图方法【步骤】  软银砸40亿美元收购DigitalBridge 强化AI资料中心布局  矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?  通义万相免费版怎么用_通义万相免费版使用方法详细指南【教程】  网易LOFTER官网链接 老福特网页版登录地址  Laravel如何使用模型观察者?(Observer代码示例)  Laravel Pest测试框架怎么用_从PHPUnit转向Pest的Laravel测试教程  如何在阿里云部署织梦网站?  无锡营销型网站制作公司,无锡网选车牌流程?  Laravel如何处理CORS跨域问题_Laravel项目CORS配置与解决方案  Microsoft Edge如何解决网页加载问题 Edge浏览器加载问题修复  如何自定义建站之星网站的导航菜单样式?  Java解压缩zip - 解压缩多个文件或文件夹实例  lovemo网页版地址 lovemo官网手机登录  Laravel distinct去重查询_Laravel Eloquent去重方法  Laravel Octane如何提升性能_使用Laravel Octane加速你的应用  如何在IIS中新建站点并解决端口绑定冲突?  QQ浏览器网页版登录入口 个人中心在线进入  广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?  标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?  济南网站建设制作公司,室内设计网站一般都有哪些功能?  Laravel如何处理跨站请求伪造(CSRF)保护_Laravel表单安全机制与令牌校验  武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?  深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?  三星、SK海力士获美批准:可向中国出口芯片制造设备  如何快速打造个性化非模板自助建站?  百度浏览器如何管理插件 百度浏览器插件管理方法  Laravel怎么为数据库表字段添加索引以优化查询  如何快速重置建站主机并恢复默认配置?  电商网站制作价格怎么算,网上拍卖流程以及规则?  Python文本处理实践_日志清洗解析【指导】  Laravel怎么集成Log日志记录_Laravel单文件与每日日志配置及自定义通道【详解】  Laravel如何使用Facades(门面)及其工作原理_Laravel门面模式与底层机制  javascript日期怎么处理_如何格式化输出  Laravel如何生成API文档?(Swagger/OpenAPI教程)  手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?  如何快速生成专业多端适配建站电话?