成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

pytz-時(shí)區(qū)相關(guān)模塊

LucasTwilight / 2709人閱讀

摘要:最近開(kāi)發(fā)過(guò)程中遇到這樣一個(gè)問(wèn)題在使用模塊獲取當(dāng)前時(shí)間之后與程序中某些時(shí)間操作會(huì)報(bào)錯(cuò)這個(gè)我就有點(diǎn)納悶了怎么會(huì)報(bào)這個(gè)錯(cuò)誤呢然后我開(kāi)始搜資料原來(lái)在有兩種時(shí)間類(lèi)型和沒(méi)有表明時(shí)區(qū)的時(shí)間如有時(shí)區(qū)的時(shí)間如可以發(fā)現(xiàn)類(lèi)型時(shí)間在打印對(duì)象信息時(shí)多了一個(gè)沒(méi)錯(cuò)這

最近開(kāi)發(fā)過(guò)程中遇到這樣一個(gè)問(wèn)題:

在使用datetime模塊獲取當(dāng)前時(shí)間之后,與程序中某些時(shí)間操作會(huì)報(bào)錯(cuò):
TypeError: can"t subtract offset-naive and offset-aware datetimes

這個(gè)我就有點(diǎn)納悶了,怎么會(huì)報(bào)這個(gè)錯(cuò)誤呢?然后我開(kāi)始搜資料,原來(lái)在有兩種時(shí)間類(lèi)型:naiveaware

naive

沒(méi)有表明時(shí)區(qū)的時(shí)間.如: datetime.datetime.now()

  datetime.datetime(2019, 7, 8, 14, 13, 52, 534690)

aware

有時(shí)區(qū)的時(shí)間.如:datetime.datetime.now(pytz.utc)

  datetime.datetime(2019, 7, 8, 6, 22, 16, 245504, tzinfo=)

可以發(fā)現(xiàn)aware類(lèi)型時(shí)間在打印對(duì)象信息時(shí)多了一個(gè)tzinfo,沒(méi)錯(cuò),這個(gè)就是用來(lái)標(biāo)識(shí)時(shí)區(qū)的.而因?yàn)槲覀儷@取當(dāng)前的時(shí)候沒(méi)有傳入時(shí)區(qū),為naive類(lèi)型,所以與有些aware時(shí)間操作會(huì)發(fā)生異常,其實(shí)解決方法也很簡(jiǎn)單,將naive轉(zhuǎn)化為aware類(lèi)型就好了,怎樣轉(zhuǎn)化呢?我找到了這幾種方式:

方式一
datetime.datetime.now().replace(tzinfo=pytz.utc)
方式二
datetime.datetime.now(pytz.utc)
方式三
pytz.utc.localize(datetime.datetime.now())

而第二種生成方式是在創(chuàng)建時(shí)間的時(shí)候指定時(shí)間,其他兩種可以用來(lái)轉(zhuǎn)化/修改時(shí)區(qū).寫(xiě)了這么多,你們肯定在疑惑一個(gè)東西:pytz
這是一個(gè)時(shí)區(qū)模塊,用來(lái)在python中進(jìn)行一個(gè)時(shí)區(qū)的相關(guān)操作.其提供的對(duì)象方法為

__all__ = [
    "timezone", "utc", "country_timezones", "country_names",
    "AmbiguousTimeError", "InvalidTimeError",
    "NonExistentTimeError", "UnknownTimeZoneError",
    "all_timezones", "all_timezones_set",
    "common_timezones", "common_timezones_set",
]

接下來(lái)我們一個(gè)個(gè)介紹:

timezone:傳入一個(gè)時(shí)區(qū),如:Asia/Shanghai,返回一個(gè)時(shí)區(qū)對(duì)象

pytz.timezone("Asia/Shanghai")
>>> 

utc: 返回一個(gè)utc時(shí)區(qū)對(duì)象

pytz.utc
>>> 

country_timezones:傳入一個(gè)國(guó)家英文縮寫(xiě),返回?fù)碛械臅r(shí)區(qū),如:中國(guó)("CN"),不傳則返回由247個(gè)國(guó)家縮寫(xiě)為key,時(shí)區(qū)為值的dict

pytz.country_timezones("CN")
>>> [u"Asia/Shanghai", u"Asia/Urumqi"]

country_names:拿一個(gè)國(guó)家英文縮寫(xiě),返回國(guó)家完整英文名稱

pytz.country_names["CN"]
>>>  u"China"

all_timezones:所有時(shí)區(qū)的列表(591個(gè))

pytz.all_timezones
>>>  ["Asia/Shanghai", "Asia/Urumqi", ...] # 有591個(gè),所以還是列一下咱們國(guó)家的時(shí)區(qū)

all_timezones_set:所有時(shí)區(qū)的集合

pytz.all_timezones_set
>>>  {"Asia/Shanghai", "Asia/Urumqi", ...}

common_timezones:常用的時(shí)區(qū)列表(439個(gè))

pytz.common_timezones
>>>  ["Asia/Shanghai", "Asia/Urumqi", ...] # 有439個(gè)

common_timezones_set:常用的時(shí)區(qū)集合

pytz.common_timezones
>>>  {"Asia/Shanghai", "Asia/Urumqi", ...}

AmbiguousTimeError:模糊時(shí)間錯(cuò)誤

InvalidTimeError:無(wú)效時(shí)間錯(cuò)誤

NonExistentTimeError:不存在的時(shí)間錯(cuò)誤

UnknownTimeZoneError:未知的時(shí)區(qū)錯(cuò)誤

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/45113.html

相關(guān)文章

  • 解決樹(shù)莓派下載django的TypeError:..... Retry and int 問(wèn)題

    摘要:沒(méi)報(bào)錯(cuò)但依然無(wú)法安裝使用再次安裝無(wú)果感謝大神的分享我才發(fā)覺(jué)這是一個(gè)新手的通用問(wèn)題樹(shù)莓派自帶的系統(tǒng)附帶了一個(gè)來(lái)自前寒武紀(jì)的版本,如果您不想花費(fèi)數(shù)小時(shí)來(lái)調(diào)試與相關(guān)的問(wèn)題,那么就必須升級(jí)它。 諸位, 不好意思哈, 請(qǐng)?jiān)试S我把完整的標(biāo)題寫(xiě)完(標(biāo)題不能超過(guò)64個(gè)有效字符): 記一次解決樹(shù)莓派下載Django庫(kù) ——報(bào)錯(cuò)為T(mén)ypeError: unsupported operand types f...

    TalkingData 評(píng)論0 收藏0
  • Python 3,一行代碼處理各種時(shí)間轉(zhuǎn)換,從此跟datetime,time模塊說(shuō)拜拜 ~ ~ 不收

    摘要:代碼實(shí)例的時(shí)間的時(shí)間輸出和相差的時(shí)長(zhǎng)輸出結(jié)果也就是說(shuō),多倫多和溫哥華有個(gè)小時(shí)的時(shí)差小屌絲我去這么牛嘛小魚(yú)這是開(kāi)胃菜。代碼實(shí)例為了顯示直觀,我直接用來(lái)運(yùn)行這沒(méi)有什么難度,在前面的代碼中,也有展示。 ...

    yy13818512006 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<