国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python中生成Epoch的方法

2019-11-25 16:13:41
字體:
來源:轉載
供稿:網友

在Python2中datetime對象沒有timestamp方法,不能很方便的生成epoch,現有方法沒有處理很容易導致錯誤。關于Epoch可以參見時區與Epoch

0 Python中生成Epoch

from datetime import datetime# python3datetime.now().timestamp()# python2import timetime.mktime(datetime.now().timetuple()) # 為了兼容python2和3,該用法使用更廣泛

1 錯誤代碼

from datetime import datetimeimport pytzaware_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的方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 隆化县| 石门县| 新晃| 泸州市| 蓬安县| 永春县| 芦山县| 民乐县| 读书| 庆城县| 江川县| 九江市| 乌拉特前旗| 乳源| 玉环县| 都匀市| 西乌珠穆沁旗| 宁化县| 正镶白旗| 朝阳县| 成安县| 博爱县| 张掖市| 南京市| 嵊泗县| 乐清市| 东乌珠穆沁旗| 鄂尔多斯市| 读书| 成都市| 宿州市| 萨迦县| 临武县| 阿图什市| 屏山县| 勐海县| 康马县| 凤凰县| 竹溪县| 马尔康县| 阿图什市|