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中函数的用法实例教程
Sep 08 Python
python使用arp欺骗伪造网关的方法
Apr 24 Python
简单介绍Python中利用生成器实现的并发编程
May 04 Python
Python中shape计算矩阵的方法示例
Apr 21 Python
python爬虫获取淘宝天猫商品详细参数
Jun 23 Python
浅谈python str.format与制表符\t关于中文对齐的细节问题
Jan 14 Python
简单了解Python matplotlib线的属性
Jun 29 Python
利用Python实现手机短信监控通知的方法
Jul 22 Python
Python使用matplotlib绘制三维参数曲线操作示例
Sep 10 Python
python 使用shutil复制图片的例子
Dec 13 Python
Python Opencv图像处理基本操作代码详解
Aug 31 Python
python使用requests库爬取拉勾网招聘信息的实现
Nov 20 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
支持oicq头像的留言簿(一)
2006/10/09 PHP
解析php中反射的应用
2013/06/18 PHP
PHP模糊查询的实现方法(推荐)
2016/09/06 PHP
PHP入门教程之图像处理技巧分析
2016/09/11 PHP
用JQuery 实现AJAX加载XML并解析的脚本
2009/07/25 Javascript
学习JS面向对象成果 借国庆发布个最新作品与大家交流
2009/10/03 Javascript
11个用于提高排版水平的基于jquery的文字效果插件
2012/09/14 Javascript
Javascript基础之数组的使用
2016/05/13 Javascript
jQuery获取select选中的option的value值实现方法
2016/08/29 Javascript
基于Datatables跳转到指定页的简单实例
2017/11/09 Javascript
详解 vue better-scroll滚动插件排坑
2018/02/08 Javascript
20个最常见的jQuery面试问题及答案
2018/05/23 jQuery
微信小程序画布圆形进度条显示效果
2020/11/17 Javascript
webpack4 入门最简单的例子介绍
2018/09/05 Javascript
jQuery实现全选、反选和不选功能的方法详解
2019/12/04 jQuery
微信小程序返回上一页传参并刷新过程解析
2019/12/13 Javascript
24个ES6方法解决JS实际开发问题(小结)
2020/05/31 Javascript
详解如何在vue+element-ui的项目中封装dialog组件
2020/12/11 Vue.js
微信小程序之高德地图多点路线规划过程示例详解
2021/01/18 Javascript
[55:39]DOTA2-DPC中国联赛 正赛 VG vs LBZS BO3 第二场 1月19日
2021/03/11 DOTA
Python抓取淘宝下拉框关键词的方法
2015/07/08 Python
python ansible服务及剧本编写
2017/12/29 Python
Python内置函数reversed()用法分析
2018/03/20 Python
python删除文本中行数标签的方法
2018/05/31 Python
python获取磁盘号下盘符步骤详解
2019/06/19 Python
Python-Seaborn热图绘制的实现方法
2019/07/15 Python
Python JSON编解码方式原理详解
2020/01/20 Python
Python中如何引入第三方模块
2020/05/27 Python
python 判断一组数据是否符合正态分布
2020/09/23 Python
如何向scrapy中的spider传递参数的几种方法
2020/11/18 Python
会议活动邀请函
2014/01/27 职场文书
寒假家长评语大全
2014/04/16 职场文书
网吧七夕活动策划方案
2014/08/31 职场文书
护士医德考评自我评价
2015/03/03 职场文书
幼儿园小班教师随笔
2015/08/14 职场文书
零基础学java之带返回值的方法的定义和调用
2022/04/10 Java/Android