Python中生成Epoch的方法


Posted in Python onApril 26, 2017

在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 相关文章推荐
python获取文件版本信息、公司名和产品名的方法
Oct 05 Python
Python用Bottle轻量级框架进行Web开发
Jun 08 Python
Java多线程编程中ThreadLocal类的用法及深入
Jun 21 Python
python开发环境PyScripter中文乱码问题解决方案
Sep 11 Python
利用Python找出序列中出现最多的元素示例代码
Dec 08 Python
python实现Adapter模式实例代码
Feb 09 Python
Django使用Mysql数据库已经存在的数据表方法
May 27 Python
python 求10个数的平均数实例
Dec 16 Python
python判断链表是否有环的实例代码
Jan 31 Python
TensorFlow学习之分布式的TensorFlow运行环境
Feb 05 Python
Python爬虫爬取、解析数据操作示例
Mar 27 Python
python通过opencv调用摄像头操作实例分析
Jun 07 Python
python 网络编程详解及简单实例
Apr 25 #Python
python 全文检索引擎详解
Apr 25 #Python
window下eclipse安装python插件教程
Apr 24 #Python
Python处理PDF及生成多层PDF实例代码
Apr 24 #Python
python爬虫框架scrapy实战之爬取京东商城进阶篇
Apr 24 #Python
python爬虫实战之爬取京东商城实例教程
Apr 24 #Python
python中urllib.unquote乱码的原因与解决方法
Apr 24 #Python
You might like
php微信公众平台开发类实例
2015/04/01 PHP
PHP使用内置函数file_put_contents写入文件及追加内容的方法
2015/12/07 PHP
PHP错误和异常处理功能模块示例
2016/11/12 PHP
php提取微信账单的有效信息
2018/10/01 PHP
再论Javascript的类继承
2011/03/05 Javascript
JavaScript之Getters和Setters 平台支持等详细介绍
2012/12/07 Javascript
Jquery实现带动画效果的经典二级导航菜单
2013/03/22 Javascript
Javascript 鼠标移动上去小三角形滑块缓慢跟随效果
2013/04/26 Javascript
详解javascript遍历方式
2015/11/11 Javascript
input获取焦点时底部菜单被顶上来问题的解决办法
2017/01/24 Javascript
Vue 短信验证码组件开发详解
2017/02/14 Javascript
JS字符串false转boolean的方法(推荐)
2017/03/08 Javascript
node实现简单的反向代理服务器
2017/07/26 Javascript
KOA+egg.js集成kafka消息队列的示例
2018/11/09 Javascript
vue+element UI实现树形表格带复选框的示例代码
2019/04/16 Javascript
一篇文章弄懂javascript中的执行栈与执行上下文
2019/08/09 Javascript
[00:34]TI7不朽珍藏III——纯金地穴编织者饰品展示
2017/07/15 DOTA
Python中使用PIL库实现图片高斯模糊实例
2015/02/08 Python
通过Py2exe将自己的python程序打包成.exe/.app的方法
2018/05/26 Python
Python 字符串转换为整形和浮点类型的方法
2018/07/17 Python
pygame游戏之旅 载入小车图片、更新窗口
2018/11/20 Python
Python hexstring-list-str之间的转换方法
2019/06/12 Python
vim自动补全插件YouCompleteMe(YCM)安装过程解析
2019/10/21 Python
美国高档百货Nordstrom的折扣店:Nordstrom Rack
2017/11/13 全球购物
美国著名的家居用品购物网站:Bed Bath & Beyond
2018/01/05 全球购物
英国顶尖手表珠宝品牌独家授权经销商:HS Johnson
2020/10/28 全球购物
工商管理本科毕业生求职信范文
2013/10/05 职场文书
初中语文教学反思
2014/02/02 职场文书
关于旷工的检讨书
2014/02/02 职场文书
新护士岗前培训制度
2014/02/02 职场文书
考试没考好检讨书(精选篇)
2014/11/16 职场文书
员工辞职信怎么写
2015/02/27 职场文书
销售经理助理岗位职责
2015/04/13 职场文书
2015年派出所工作总结
2015/04/24 职场文书
交通安全温馨提示语
2015/07/14 职场文书
pytorch训练神经网络爆内存的解决方案
2021/05/22 Python