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