摘要:最近開發(fā)過程中遇到這樣一個問題在使用模塊獲取當(dāng)前時間之后與程序中某些時間操作會報錯這個我就有點納悶了怎么會報這個錯誤呢然后我開始搜資料原來在有兩種時間類型和沒有表明時區(qū)的時間如有時區(qū)的時間如可以發(fā)現(xiàn)類型時間在打印對象信息時多了一個沒錯這
最近開發(fā)過程中遇到這樣一個問題:
在使用datetime模塊獲取當(dāng)前時間之后,與程序中某些時間操作會報錯:
TypeError: can"t subtract offset-naive and offset-aware datetimes
這個我就有點納悶了,怎么會報這個錯誤呢?然后我開始搜資料,原來在有兩種時間類型:naive和aware
naive
沒有表明時區(qū)的時間.如: datetime.datetime.now()
datetime.datetime(2019, 7, 8, 14, 13, 52, 534690)
aware
有時區(qū)的時間.如:datetime.datetime.now(pytz.utc)
datetime.datetime(2019, 7, 8, 6, 22, 16, 245504, tzinfo=)
可以發(fā)現(xiàn)aware類型時間在打印對象信息時多了一個tzinfo,沒錯,這個就是用來標識時區(qū)的.而因為我們獲取當(dāng)前的時候沒有傳入時區(qū),為naive類型,所以與有些aware時間操作會發(fā)生異常,其實解決方法也很簡單,將naive轉(zhuǎn)化為aware類型就好了,怎樣轉(zhuǎn)化呢?我找到了這幾種方式:
方式一datetime.datetime.now().replace(tzinfo=pytz.utc)方式二
datetime.datetime.now(pytz.utc)方式三
pytz.utc.localize(datetime.datetime.now())
而第二種生成方式是在創(chuàng)建時間的時候指定時間,其他兩種可以用來轉(zhuǎn)化/修改時區(qū).寫了這么多,你們肯定在疑惑一個東西:pytz
這是一個時區(qū)模塊,用來在python中進行一個時區(qū)的相關(guān)操作.其提供的對象方法為
__all__ = [ "timezone", "utc", "country_timezones", "country_names", "AmbiguousTimeError", "InvalidTimeError", "NonExistentTimeError", "UnknownTimeZoneError", "all_timezones", "all_timezones_set", "common_timezones", "common_timezones_set", ]
接下來我們一個個介紹:
timezone:傳入一個時區(qū),如:Asia/Shanghai,返回一個時區(qū)對象
pytz.timezone("Asia/Shanghai") >>>
utc: 返回一個utc時區(qū)對象
pytz.utc >>>
country_timezones:傳入一個國家英文縮寫,返回擁有的時區(qū),如:中國("CN"),不傳則返回由247個國家縮寫為key,時區(qū)為值的dict
pytz.country_timezones("CN") >>> [u"Asia/Shanghai", u"Asia/Urumqi"]
country_names:拿一個國家英文縮寫,返回國家完整英文名稱
pytz.country_names["CN"] >>> u"China"
all_timezones:所有時區(qū)的列表(591個)
pytz.all_timezones >>> ["Asia/Shanghai", "Asia/Urumqi", ...] # 有591個,所以還是列一下咱們國家的時區(qū)
all_timezones_set:所有時區(qū)的集合
pytz.all_timezones_set >>> {"Asia/Shanghai", "Asia/Urumqi", ...}
common_timezones:常用的時區(qū)列表(439個)
pytz.common_timezones >>> ["Asia/Shanghai", "Asia/Urumqi", ...] # 有439個
common_timezones_set:常用的時區(qū)集合
pytz.common_timezones >>> {"Asia/Shanghai", "Asia/Urumqi", ...}
AmbiguousTimeError:模糊時間錯誤
InvalidTimeError:無效時間錯誤
NonExistentTimeError:不存在的時間錯誤
UnknownTimeZoneError:未知的時區(qū)錯誤
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/45113.html
摘要:沒報錯但依然無法安裝使用再次安裝無果感謝大神的分享我才發(fā)覺這是一個新手的通用問題樹莓派自帶的系統(tǒng)附帶了一個來自前寒武紀的版本,如果您不想花費數(shù)小時來調(diào)試與相關(guān)的問題,那么就必須升級它。 諸位, 不好意思哈, 請允許我把完整的標題寫完(標題不能超過64個有效字符): 記一次解決樹莓派下載Django庫 ——報錯為TypeError: unsupported operand types f...
摘要:代碼實例的時間的時間輸出和相差的時長輸出結(jié)果也就是說,多倫多和溫哥華有個小時的時差小屌絲我去這么牛嘛小魚這是開胃菜。代碼實例為了顯示直觀,我直接用來運行這沒有什么難度,在前面的代碼中,也有展示。 ...
閱讀 4185·2021-10-08 10:04
閱讀 3141·2021-08-11 11:20
閱讀 2902·2021-07-25 21:37
閱讀 2745·2019-08-30 12:44
閱讀 2391·2019-08-30 11:12
閱讀 1367·2019-08-26 13:45
閱讀 2423·2019-08-26 11:53
閱讀 3121·2019-08-26 11:32