python使用datetime.utcnow()問(wèn)題解析
起步
執(zhí)行下面代碼:
import time from datetime import datetime, timezone, timedelta print(time.time()) print(datetime.utcnow().timestamp()) print(datetime.now(timezone.utc).timestamp()) print(datetime.now(timezone(timedelta(hours=2))).timestamp()) ==== output ==== 1626687759.9081082 1626658959.908108 1626687759.908108 1626687759.908108
發(fā)現(xiàn),輸出的時(shí)間戳中只有 utcnow()
是不一樣,如果對(duì)比相差的時(shí)間能發(fā)現(xiàn)正好差8小時(shí),而我電腦所在的時(shí)區(qū)正好是東八區(qū)。
原因
正如 utcnow()
文檔 所表明的那樣,它返回的是 naive time
,Naive datetime 實(shí)例被認(rèn)為為表示本地時(shí)間,因此它的時(shí)間戳?xí)仁褂?nbsp;now(None)
相差的時(shí)間正好是該電腦所在時(shí)區(qū)。
造成這種詭異處理方式的是有歷史原因的,在 Python 2 轉(zhuǎn) Python 3 的過(guò)渡階段中,datetime.timezone 作為 3.2 版中的新功能被設(shè)計(jì)了出來(lái),因此有了更為清晰明確的標(biāo)記日期所在的時(shí)區(qū)。舊的接口 utcnow()
則保留了原先的處理方式。
新的時(shí)區(qū)的模型的處理方式與Python 2 存在兼容問(wèn)題:
==== Python 2 ==== >>> from datetime import datetime >>> from dateutil import tz >>> datetime(2021, 5, 1).astimezone(tz.UTC) Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: astimezone() cannot be applied to a naive datetime ==== Python 3 ==== >>> from datetime import datetime >>> from dateutil import tz >>> datetime(2021, 5, 1).astimezone(tz.UTC) datetime.datetime(2021, 5, 1, 4, 0, tzinfo=tzutc())
總結(jié)
綜上所述, utcnow()
可能是一個(gè)常見(jiàn)的陷阱。
我建議不要再使用 utcnow()
和 utcfromtimestamp()
。
以上就是python使用datetime.utcnow()問(wèn)題解析的詳細(xì)內(nèi)容,更多關(guān)于python datetime.utcnow()的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python實(shí)現(xiàn)好友全頭像的拼接實(shí)例(推薦)
下面小編就為大家?guī)?lái)一篇Python實(shí)現(xiàn)好友全頭像的拼接實(shí)例(推薦)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-06-06如何使用python檢測(cè)某網(wǎng)盤(pán)鏈接是否有效
這篇文章主要為大家介紹了使用python檢測(cè)某網(wǎng)盤(pán)鏈接是否有效的方法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-01-01python對(duì)兩個(gè)數(shù)組進(jìn)行合并排列處理的兩種方法
最近遇到數(shù)組合并問(wèn)題,以此記錄解決方法,供大家參考學(xué)習(xí),下面這篇文章主要給大家介紹了關(guān)于python對(duì)兩個(gè)數(shù)組進(jìn)行合并排列處理的兩種方法,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-05-05Python爬蟲(chóng)獲取AliExpress商品詳情的詳細(xì)步驟
速賣(mài)通(AliExpress)是全球知名的在線零售平臺(tái),隸屬于阿里巴巴集團(tuán),下面給大家介紹如何使用Python進(jìn)行這一操作的詳細(xì)步驟,感謝的朋友一起看看吧2024-12-12Python求解任意閉區(qū)間的所有素?cái)?shù)
本篇文章是一篇關(guān)于python求素?cái)?shù)的知識(shí)點(diǎn)內(nèi)容,如果大家在應(yīng)用中有用的到,不妨跟著學(xué)習(xí)下。2018-06-06解決Django的request.POST獲取不到內(nèi)容的問(wèn)題
今天小編就為大家分享一篇解決Django的request.POST獲取不到內(nèi)容的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-05-05Python Numpy學(xué)習(xí)之索引及切片的使用方法
數(shù)組中的元素可以通過(guò)索引以及切片的手段進(jìn)行訪問(wèn)或者修改,和列表的切片操作一樣。本文將詳細(xì)為大家介紹一下Python中的科學(xué)計(jì)算庫(kù)-Numpy的索引及切片的使用方法2022-01-01Python如何精準(zhǔn)定位并修改MP4文件的mvhd原子
深入了解MP4文件的結(jié)構(gòu)對(duì)于安全地修改元數(shù)據(jù)非常重要,這篇文章主要為大家詳細(xì)介紹了Python如何精準(zhǔn)定位并修改MP4文件的mvhd原子,需要的可以參考下2025-01-01