亚洲综合原千岁中文字幕_国产精品99久久久久久久vr_无码人妻aⅴ一区二区三区浪潮_成人h动漫精品一区二区三

主頁 > 知識庫 > 淺談Python3中datetime不同時區轉換介紹與踩坑

淺談Python3中datetime不同時區轉換介紹與踩坑

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

最近的項目需要根據用戶所屬時區制定一些特定策略,學習、應用了若干python3的時區轉換相關知識,這里整理一部分記錄下來。

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

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

UTC時間:Universal Time Coordinated 世界協調時,可以認為是更精準的GMT時間,但兩者誤差極小,在1s以內,一般可視為等同

LMT:Local Mean Time, 當地標準時間

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

Python使用到的時間相關函數及概念:

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

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

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

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

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

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

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

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

datetime.astimezone(tz): 將時間轉換為新的tz時區的offset-aware datetime

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

Python中獲取當前時刻時間:

In [1]: import pytz

In [2]: from datetime import datetime, timedelta

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

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

可以看到,datetime.now()未指定時區時,獲取到的對象是offset-navie datetime,而指定時區后則是offset-aware datetime,naive和aware的datetime是不可以執行比較、相減相關操作的,只有同類型的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,然后將其轉換為東京時間,直覺上我們很可能這么寫:

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

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

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

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區應使用GMT-9

這里第二個坑出現了,由于歷史原因,Python中timezone的表示中,時區偏移以西為正,以東為負,和我們熟悉的ISO標準剛好相反,所以東9區應該表示為Etc/GMT-9, 而Etc/GMT+9表示的其實是西9區,如下可以驗證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)

最后,獲取指定時區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和東八區標準時間(CST+8)一致

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

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

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

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'))

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

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

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

巨人網絡通訊聲明:本文標題《淺談Python3中datetime不同時區轉換介紹與踩坑》,本文關鍵詞  淺談,Python3,中,datetime,不同,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《淺談Python3中datetime不同時區轉換介紹與踩坑》相關的同類信息!
  • 本頁收集關于淺談Python3中datetime不同時區轉換介紹與踩坑的相關信息資訊供網民參考!
  • 推薦文章
    日韩一级黄色片| 久久精品免视看国产成人2021| 欧美激情一区二区三区在线| 亚州视频一区二区| 欧美18性精品| 国产a视频精品免费观看| 毛片成人永久免费视频| 精品视频在线看| 欧美爱爱网| 欧美爱爱网| 欧美18性精品| 国产成人精品综合久久久| 日本特黄特色aa大片免费| 日韩中文字幕在线观看视频| 国产不卡高清在线观看视频| 日韩在线观看网站| 亚洲第一色在线| 色综合久久天天综合| 国产伦理精品| 欧美日本二区| 成人免费网站久久久| 国产a视频精品免费观看| 九九精品在线| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 国产91丝袜在线播放0| 日韩男人天堂| 午夜在线观看视频免费 成人| 国产伦精品一区二区三区在线观看| 久久久久久久久综合影视网| 香蕉视频三级| 午夜在线观看视频免费 成人| 一本伊大人香蕉高清在线观看| 精品视频一区二区| 韩国三级香港三级日本三级| 成人免费高清视频| 久久久久久久久综合影视网| 国产一区精品| 999久久66久6只有精品| 天堂网中文字幕| 日日日夜夜操| 久草免费在线观看| 人人干人人草| 国产一区二区精品久久91| 欧美日本二区| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 青青青草视频在线观看| 日日日夜夜操| 日韩在线观看免费完整版视频| 可以免费看毛片的网站| 韩国三级视频网站| 九九九网站| 99久久视频| 天天色成人| 欧美激情一区二区三区在线| 色综合久久天天综合| 久久国产影视免费精品| 日韩免费片| 可以免费看毛片的网站| 久久国产影视免费精品| 天天做人人爱夜夜爽2020毛片| 美女免费毛片| 久久久久久久久综合影视网| 日韩在线观看免费完整版视频| 国产综合91天堂亚洲国产| 精品国产一区二区三区久| 日韩专区亚洲综合久久| 欧美一级视频免费观看| 亚欧成人乱码一区二区| 可以免费看毛片的网站| 成人影视在线播放| 欧美一级视频免费观看| 青青青草视频在线观看| 日韩av片免费播放| 国产伦理精品| 久久精品大片| 国产福利免费视频| 91麻豆爱豆果冻天美星空| 91麻豆精品国产自产在线观看一区| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 欧美激情一区二区三区视频 | 国产麻豆精品高清在线播放| 国产福利免费视频| 成人免费高清视频| 久久国产精品永久免费网站| 天天色成人| 国产不卡在线观看视频| 日韩中文字幕在线观看视频| 国产伦精品一区二区三区在线观看| 国产不卡高清在线观看视频| 国产福利免费视频| 99久久精品国产麻豆| 香蕉视频三级| 中文字幕一区二区三区 精品 | 天堂网中文字幕| 日日日夜夜操| 久久成人亚洲| 亚洲www美色| 亚洲www美色| 香蕉视频三级| 成人免费网站久久久| 99久久精品国产麻豆| 亚洲www美色| 国产麻豆精品高清在线播放| 国产a视频精品免费观看| 日韩在线观看网站| 欧美激情伊人| 久久精品免视看国产成人2021| 国产精品免费久久| 亚洲精品久久久中文字| 亚洲精品久久久中文字| 日韩中文字幕在线观看视频| 一级女性大黄生活片免费| 日韩一级黄色| 黄色福利片| 99热精品一区| a级精品九九九大片免费看| 香蕉视频久久| 国产伦精品一区二区三区无广告 | 可以免费看污视频的网站| 国产一区二区精品久久| 一级毛片看真人在线视频| 亚洲 男人 天堂| 国产麻豆精品免费密入口| 久久国产一区二区| 日本特黄一级| 欧美激情一区二区三区视频| 日本伦理片网站| 九九久久99| 成人高清护士在线播放| 香蕉视频久久| 亚洲 男人 天堂| a级精品九九九大片免费看| 精品国产一区二区三区久久久狼| a级精品九九九大片免费看| 成人a大片高清在线观看| 九九久久99| 国产亚洲精品aaa大片| 欧美日本韩国| 欧美一级视频免费| 99久久精品费精品国产一区二区| 99热热久久| 黄色福利片| 国产麻豆精品免费密入口| 九九免费精品视频| 日韩中文字幕在线亚洲一区| 99热热久久| 欧美一级视频免费| 99色播| 国产麻豆精品免费密入口| 精品视频在线观看一区二区三区| 毛片电影网| 毛片电影网| 中文字幕97| 成人免费观看的视频黄页| 天天做人人爱夜夜爽2020 | 国产一区国产二区国产三区| 精品美女| 国产成a人片在线观看视频| 黄视频网站免费观看| 99色播| 精品视频免费在线| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 国产一区二区精品| 欧美大片a一级毛片视频| 精品国产亚洲人成在线| 国产欧美精品午夜在线播放| 97视频免费在线| 黄视频网站免费观看| 韩国三级香港三级日本三级la| 国产一区二区精品| 亚洲 男人 天堂| 久久久久久久免费视频| 国产一区国产二区国产三区| 亚欧成人毛片一区二区三区四区| 国产麻豆精品免费密入口| 沈樵在线观看福利| 成人a大片高清在线观看| 精品国产亚洲人成在线| 欧美激情在线精品video| 精品国产亚洲人成在线| 亚洲爆爽| 国产一区二区精品| 中文字幕97| 可以免费看污视频的网站| 日韩在线观看视频黄| 日本免费看视频| 国产伦久视频免费观看视频| 美女免费精品视频在线观看| 国产不卡在线播放| 亚欧视频在线| 日韩中文字幕在线亚洲一区| 欧美大片a一级毛片视频| 毛片电影网| 日韩一级黄色| 久久成人综合网| 欧美另类videosbestsex视频| 国产成人精品综合| 欧美另类videosbestsex视频| 黄视频网站免费观看| 国产91视频网|