婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 淺談Python3中datetime不同時區(qū)轉(zhuǎn)換介紹與踩坑

淺談Python3中datetime不同時區(qū)轉(zhuǎn)換介紹與踩坑

熱門標簽:成都呼叫中心外呼系統(tǒng)哪家強 南昌地圖標注 百應(yīng)電話機器人總部 地圖標注與注銷 無錫智能外呼系統(tǒng)好用嗎 宿州電話機器人哪家好 電梯新時達系統(tǒng)外呼顯示e 旅游廁所地圖標注怎么弄 西青語音電銷機器人哪家好

最近的項目需要根據(jù)用戶所屬時區(qū)制定一些特定策略,學(xué)習(xí)、應(yīng)用了若干python3的時區(qū)轉(zhuǎn)換相關(guān)知識,這里整理一部分記錄下來。

下面涉及的幾個概念及知識點:

GMT時間:Greenwich Mean Time, 格林尼治平均時間

UTC時間:Universal Time Coordinated 世界協(xié)調(diào)時,可以認為是更精準的GMT時間,但兩者誤差極小,在1s以內(nèi),一般可視為等同

LMT:Local Mean Time, 當?shù)貥藴蕰r間

Python中的北京時間:Python的標準timezone中信息中并沒有Asia/Beijing,原因要追溯到國民政府期間上報給國際標準的五個時區(qū)城市沒有北京,因此一般使用Asia/Shanghai獲取東8區(qū)時間

Python使用到的時間相關(guān)函數(shù)及概念:

包含時區(qū)信息的datetime稱為: offset-aware datetime,反之稱為offset-naive datetime

pytz.timezone(x): pytz package中預(yù)定義的時區(qū)相關(guān)對象, pytz可通過 python3 -m pip install pytz 安裝

datetime(...) : 直接指定year/month/day/hour/second生成naive datetime

datetime(...tzinfo=tz) : 直接指定year/month/day/hour/second+時區(qū)信息生成offset-aware datetime

datetime.now(): 生成當前默認時區(qū)的 naive datetime

datetime.now(tzinfo=tz): 生成指定時區(qū)的offset-aware datetime

datetime.strptime(string, format) : 生成當前默認時區(qū)的string、format表示的 naive datetime

datetime.replace(tzinfo=tz): 直接替換datetime 時區(qū)信息為tz時區(qū)offset-aware datetime--不針對時區(qū)進行任何轉(zhuǎn)換

datetime.astimezone(tz): 將時間轉(zhuǎn)換為新的tz時區(qū)的offset-aware datetime

下述代碼示例中,由于云主機位于日本,所以默認時區(qū)為東9區(qū)(Asia/Tokyo)

Python中獲取當前時刻時間:

In [1]: import pytz

In [2]: from datetime import datetime, timedelta

In [3]: datetime.now() # 默認時區(qū)當前時間
Out[3]: datetime.datetime(2021, 8, 1, 18, 36, 8, 352873)

In [4]: datetime.now(pytz.timezone('Asia/Tokyo')) # 指定Tokyo時區(qū)當前時間
Out[4]: datetime.datetime(2021, 8, 1, 18, 36, 25, 421048, tzinfo=DstTzInfo 'Asia/Tokyo' JST+9:00:00 STD>)

可以看到,datetime.now()未指定時區(qū)時,獲取到的對象是offset-navie datetime,而指定時區(qū)后則是offset-aware datetime,naive和aware的datetime是不可以執(zhí)行比較、相減相關(guān)操作的,只有同類型的datetime才能求時間差值、比較大小,如下:

In [5]: datetime.now() - datetime.now(pytz.timezone('Asia/Tokyo'))
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
ipython-input-5-8b6c111dc5de> in module>
----> 1 datetime.now() - datetime.now(pytz.timezone('Asia/Tokyo'))

TypeError: can't subtract offset-naive and offset-aware datetimes

In [6]: datetime.now() - datetime.now() # 只有同樣的offset-naive datetime才能求差值
Out[6]: datetime.timedelta(days=-1, seconds=86399, microseconds=999991)
In [8]: datetime.now(pytz.timezone('Asia/Tokyo')) - datetime.now(pytz.timezone('Asia/Tokyo')) # 同樣的offset-aware datetime才能求差值
Out[8]: datetime.timedelta(days=-1, seconds=86399, microseconds=999976)

這里碰到了第一個坑,比如我們想獲得北京時間2021年1月1日0點的datetime,然后將其轉(zhuǎn)換為東京時間,直覺上我們很可能這么寫:

In [19]: datetime(2021, 1, 1, tzinfo=pytz.timezone('Asia/Shanghai')) # 這里獲取北京時間20210101 0點的datetime
Out[19]: datetime.datetime(2021, 1, 1, 0, 0, tzinfo=DstTzInfo 'Asia/Shanghai' LMT+8:06:00 STD>) # 注意獲取的是LMT時間
In [21]: datetime(2021, 1, 1, tzinfo=pytz.timezone('Asia/Shanghai')).astimezone(pytz.timezone('Asia/Tokyo')) # 將北京時轉(zhuǎn)換為東京時間
Out[21]: datetime.datetime(2021, 1, 1, 0, 54, tzinfo=DstTzInfo 'Asia/Tokyo' JST+9:00:00 STD>) # 獲取的是日本標準時間JST+9
In [22]: datetime.now(pytz.timezone('Asia/Shanghai')) # 示例獲取當前時刻北京時間
Out[22]: datetime.datetime(2021, 8, 1, 18, 11, 6, 706727, tzinfo=DstTzInfo 'Asia/Shanghai' CST+8:00:00 STD>) # 獲取的是中國標準時間(CST+8)

仔細一看,北京時間的0點轉(zhuǎn)化為東京時間卻是0:54,相差是54分鐘,而不是1個小時,這就奇怪了,仔細一看tzinfo中的信息是LMT+8:06:00 STD,表示這是LMT時間,相比UTC快8小時6分鐘,而不是東8區(qū)標準時間,而通過astimezone方法轉(zhuǎn)換后得到的就是日本標準時間(東9區(qū)),所以兩者之前的差值并不是1小時整。

第一個坑究其原因,通過datetime(..tzinfo=..)指定時區(qū)獲取的是LMT,而datetime.now(tz)、datetime.astimezone(tz) 獲取的卻是UTC(GMT)標準時間,LMT和GMT標準時間可能會有甚至十分鐘級的差值,這已經(jīng)足夠影響到程序的正常邏輯了。

 所以如果要保證獲取標準時區(qū)的時間,建議避免使用Asia/Shanghai、Asia/Tokyo這類大洲/城市 字符串表示時間,而使用GMT、UTC這些無歧義的標準時區(qū),如下:

In [45]: datetime(2021, 1, 1, tzinfo=pytz.timezone('Etc/GMT-9'))
Out[45]: datetime.datetime(2021, 1, 1, 0, 0, tzinfo=StaticTzInfo 'Etc/GMT-9'>) # 東9區(qū)應(yīng)使用GMT-9

這里第二個坑出現(xiàn)了,由于歷史原因,Python中timezone的表示中,時區(qū)偏移以西為正,以東為負,和我們熟悉的ISO標準剛好相反,所以東9區(qū)應(yīng)該表示為Etc/GMT-9, 而Etc/GMT+9表示的其實是西9區(qū),如下可以驗證GMT-9與JST相差0, GMT+9與JST相差18小時(64800s):

In [50]: datetime(2021, 1, 1, tzinfo=pytz.timezone('Etc/GMT-9')) - datetime(2021, 1, 1).astimezone(pytz.timezone('Asia/Tokyo'))
Out[50]: datetime.timedelta(0)

In [51]: datetime(2021, 1, 1, tzinfo=pytz.timezone('Etc/GMT+9')) - datetime(2021, 1, 1).astimezone(pytz.timezone('Asia/Tokyo'))
Out[51]: datetime.timedelta(seconds=64800)

最后,獲取指定時區(qū)2021年1月1日datetime的方式,以北京時間為例:

In [56]: datetime(2021, 1, 1, tzinfo=pytz.timezone('Etc/GMT-8'))
Out[56]: datetime.datetime(2021, 1, 1, 0, 0, tzinfo=StaticTzInfo 'Etc/GMT-8'>)
In [58]: datetime(2021, 1, 1, tzinfo=pytz.timezone('Etc/GMT-8')).astimezone(pytz.timezone('Asia/Shanghai'))
Out[58]: datetime.datetime(2021, 1, 1, 0, 0, tzinfo=DstTzInfo 'Asia/Shanghai' CST+8:00:00 STD>) # 可見GMT-8和東八區(qū)標準時間(CST+8)一致

進一步如果要獲取指定時區(qū)零點的時間戳就很簡單了:

In [44]: datetime(2021, 1, 1, tzinfo=pytz.timezone('Etc/GMT0')).timestamp() # 獲取格林尼治時區(qū)2021年1月1日0點時間戳
Out[44]: 1609459200.0

另外兩種獲取指定時區(qū)時刻的方法,此三種方式彼此等價:

In [51]: datetime(2021, 1, 1, tzinfo=pytz.timezone('Etc/GMT0')) == datetime(2021, 1, 1).replace(tzinfo=pytz.timezone('Etc/GMT0'))
Out[51]: True
In [53]: datetime(2021, 1, 1, tzinfo=pytz.timezone('Etc/GMT0')) == datetime.strptime('20210101', '%Y%m%d').replace(tzinfo=pytz.timezone('Etc/GMT0'))

到此這篇關(guān)于淺談Python3中datetime不同時區(qū)轉(zhuǎn)換介紹與踩坑的文章就介紹到這了,更多相關(guān)Python3 datetime不同時區(qū)轉(zhuǎn)換 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • Python time.time()方法
  • 一篇文章帶你了解python標準庫--time模塊
  • 一篇文章帶你了解python標準庫--datetime模塊
  • python標準庫之time模塊的語法與簡單使用
  • python常見模塊之OS模塊和time模塊
  • Python time庫的時間時鐘處理
  • python語言time庫和datetime庫基本使用詳解
  • 關(guān)于python time庫整理匯總

標簽:西安 贛州 辛集 渭南 許昌 雅安 濰坊 七臺河

巨人網(wǎng)絡(luò)通訊聲明:本文標題《淺談Python3中datetime不同時區(qū)轉(zhuǎn)換介紹與踩坑》,本文關(guān)鍵詞  淺談,Python3,中,datetime,不同,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《淺談Python3中datetime不同時區(qū)轉(zhuǎn)換介紹與踩坑》相關(guān)的同類信息!
  • 本頁收集關(guān)于淺談Python3中datetime不同時區(qū)轉(zhuǎn)換介紹與踩坑的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    精品日产卡一卡二卡麻豆| 亚洲国产精品久久久久婷婷884 | 日韩av电影天堂| 在线观看免费一区| 亚洲午夜视频在线| 在线播放欧美女士性生活| 亚洲国产成人porn| 欧美精品色一区二区三区| 捆绑变态av一区二区三区| 欧美v日韩v国产v| 国内精品久久久久影院色| 日本一区二区三区国色天香| 99久久精品免费精品国产| 一级特黄大欧美久久久| 欧美高清dvd| 亚洲国产成人精品视频| 欧美美女网站色| 亚洲国产精品一区二区www在线 | 国产精品久久久久久久久免费樱桃| 蜜臀99久久精品久久久久久软件| 久久免费看少妇高潮| 国产精品一区二区黑丝| 亚洲图片激情小说| 欧美一级理论片| 一本久久a久久精品亚洲| 亚洲精品国产a久久久久久| 中文字幕亚洲综合久久菠萝蜜| 成人一级黄色片| 亚洲一区二区三区四区五区中文 | 五月综合激情日本mⅴ| 欧美大片在线观看一区| 大白屁股一区二区视频| 日韩av电影天堂| 亚洲欧美日韩国产中文在线| 久久欧美一区二区| 国产精品毛片大码女人| 国产欧美日本一区二区三区| 国产欧美日韩视频一区二区 | 久久精品夜色噜噜亚洲aⅴ| 成人免费高清在线| 国产成人一级电影| 国产自产2019最新不卡| 亚洲激情在线激情| 1区2区3区国产精品| 欧美一区二区三区的| 欧美蜜桃一区二区三区| 99久久婷婷国产| 久久99精品久久只有精品| 秋霞国产午夜精品免费视频| 婷婷久久综合九色国产成人 | 一区二区三区在线视频观看58| 国产亚洲自拍一区| 久久久久久97三级| 日韩一区欧美小说| 亚洲福利一二三区| 美国欧美日韩国产在线播放| 亚洲成av人片www| 美国十次了思思久久精品导航| 韩国精品久久久| 国产成人av电影在线播放| 韩国三级电影一区二区| 国产一区二区免费视频| 91亚洲大成网污www| 欧美少妇bbb| 久久久久久久久久美女| 亚洲精品va在线观看| 久久 天天综合| 97se亚洲国产综合在线| 制服丝袜亚洲播放| 伊人夜夜躁av伊人久久| 久久国产欧美日韩精品| 91在线视频免费91| 精品国产成人在线影院| 亚洲国产一区二区三区青草影视| 九九视频精品免费| 欧美日韩国产一二三| 亚洲人一二三区| 韩国精品主播一区二区在线观看| 97久久超碰国产精品| 久久精品人人做| 麻豆国产91在线播放| 欧美亚洲动漫另类| 国产精品久久久久影院亚瑟 | av不卡免费电影| 日韩精品一区二区三区在线| 午夜国产不卡在线观看视频| 在线看不卡av| 亚洲乱码国产乱码精品精98午夜| 国产69精品久久99不卡| 久久日一线二线三线suv| 日韩—二三区免费观看av| 欧美另类久久久品| 美女一区二区久久| 久久久久久久久岛国免费| 狠狠v欧美v日韩v亚洲ⅴ| 日韩午夜在线影院| 国产精品一级在线| 中文字幕中文在线不卡住| 日本高清无吗v一区| 三级不卡在线观看| 亚洲精品一区二区三区影院| 国产黄色91视频| 亚洲.国产.中文慕字在线| 亚洲国产成人在线| 综合久久久久久久| 欧洲精品在线观看| 精品亚洲porn| 一区二区三区在线影院| 欧美猛男gaygay网站| 青青草国产精品亚洲专区无| 久久人人超碰精品| 欧美日韩视频一区二区| 国产专区综合网| 亚洲国产综合在线| 国产蜜臀av在线一区二区三区| 91精品办公室少妇高潮对白| 美女在线视频一区| 一级特黄大欧美久久久| 国产亚洲1区2区3区| 欧美日韩精品系列| 99re热这里只有精品免费视频| 久久成人av少妇免费| 丝袜美腿亚洲色图| 亚洲精品视频一区二区| 欧美国产在线观看| 久久综合999| 亚洲欧美偷拍三级| 欧美一级二级在线观看| 欧美精品18+| 日韩一区二区在线播放| 欧美精品视频www在线观看| 韩国毛片一区二区三区| 亚洲国产精品欧美一二99| 中文字幕一区二区三区不卡| 欧美猛男gaygay网站| 欧美日韩三级一区| 91福利在线导航| 99热国产精品| 国产专区欧美精品| 久久精品国产网站| 日韩电影免费一区| 久久国内精品视频| 国产一区二区三区在线观看免费 | 日韩欧美三级在线| 日韩天堂在线观看| 精品国产乱码久久久久久久| 日本不卡视频在线观看| 麻豆成人91精品二区三区| 久久精品国产成人一区二区三区| 久久精品国产久精国产| 国产福利一区二区| 在线欧美日韩精品| 精品国产亚洲在线| 亚洲美女免费视频| 国产一区二区三区免费看| av不卡免费电影| 337p粉嫩大胆色噜噜噜噜亚洲 | 18欧美亚洲精品| 日韩av不卡一区二区| 成人国产视频在线观看| 欧美色网站导航| 久久精品亚洲精品国产欧美kt∨ | 欧美一区二区三区视频免费| 精品粉嫩超白一线天av| 一区二区三区在线视频播放| 青青草成人在线观看| 色偷偷88欧美精品久久久| 欧美videossexotv100| 亚洲女爱视频在线| 国产久卡久卡久卡久卡视频精品| 欧美视频三区在线播放| 亚洲日本中文字幕区| 国产精品99久久久久久宅男| 欧美日韩国产大片| 视频一区二区中文字幕| 日本道色综合久久| 99国产精品一区| 国产欧美日韩三区| 国产精品一二三区在线| 欧美成人福利视频| 极品美女销魂一区二区三区免费| 日韩视频在线观看一区二区| 一区二区成人在线视频| 色琪琪一区二区三区亚洲区| 亚洲丝袜另类动漫二区| 色婷婷国产精品综合在线观看| 国产精品白丝在线| 在线一区二区三区| 日韩国产欧美三级| 久久综合久久鬼色中文字| 成a人片国产精品| 亚洲成人自拍偷拍| 2020国产精品久久精品美国| 国产成人在线视频免费播放| 亚洲色欲色欲www在线观看| 欧美性受xxxx黑人xyx性爽| 午夜精品久久久久久久99樱桃 | 成人毛片老司机大片| 国产精品网曝门| 欧美一区二区三区性视频|