日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Python datetime 如何處理時區信息

瀏覽:2日期:2022-07-12 14:58:11

在 Python 常用日期處理 -- 內置模塊 datetime 探討了 Python 如何使用 datetime, 如果是一個跨時區的應用(Web 應用都是),就不能只存儲一個時間而不帶時區,如此,全球用戶將會看到一個相同的時間字符串,白天黑夜就錯亂了。比說用戶信息的更新時間存儲為 2020-07-07 13:46:08, 上海的用戶和芝加哥的用戶看到的是同一個時間字符串,實質上卻相差好多個小時。

我們可以這么做,在服務端只存儲一個 Timestamp 長整型值或 UTC 時間,Timestamp 是無關乎時區的,它總是相對于一個 UTC 時間的偏移值; 然后由客戶端根據本地時區來顯示當地時間。不過在服務端存儲為 Timestamp 或 UTC 可讀性就不強了,打開文件看到 Timestamp 整形值,大腦是無法直接轉換為日期,UTC 時間略好一些。

另一種做法可在服務端存儲為開發者便于理解的帶時區的時間,如 2020-07-07T13:46:08.342+08:00, 客戶獲得該時間,因為帶有時區信息也就能轉換為客戶端本地時間。

客戶端請求時還可以把本地的時區信息傳送給服務端,由服務端轉換為相應的本地時間發送給客戶端,但 HTTP 頭信息默認不帶時區信息,客戶端必須主動發送它。

本人傾向于在服務端存為帶時區的時間,2020-07-07T13:46:08.342+08:00 是一個標準的存儲格式(ISO_OFFSET_DATE_TIME),客戶端收到它再轉換本地時間,JavaScript 一個很好的組件 moment 處理時間。

探索 Python 對時區的處理

Python 內置組件不能像 Java 的 ZoneId.of('Asia/Shanghai') 直接以時區名獲得 Zone,而需要知道與標準時區的偏移,如上海是東八區,在 Python 中要用 timezone(timedelta(hours=+8)).

那么來看 Python 中輸出帶時區信息,以下是一些應用 Pytho 時區 timezone 的例子

from datetime import datetime, timezone, timedelta tz = timezone(timedelta(hours=+8)) fmt = ’%Y-%m-%dT%H:%M:%S.%f%z’zoned_time1 = datetime.today().astimezone(tz)print(1, zoned_time1.strftime(fmt)) # 2020-07-08T04:30:26.221450+0800 zoned_time2 = datetime.now(tz)print(2, zoned_time2.strftime(fmt)) # 2020-07-08T04:30:26.221543+0800 zoned_time3 = datetime.utcnow()print(3, zoned_time3.isoformat()) # 2020-07-07T20:30:26.221848 print(4, zoned_time2.strftime(’%Y-%m-%dT%H:%M:%S.%f%Z’)) # 2020-07-08T04:30:26.221543UTC+08:00 timestamp = datetime.today().timestamp()print(5, timestamp) # 1594153826.221895print(6, datetime.fromtimestamp(timestamp, tz=tz)) # 2020-07-08 04:30:26.221895+08:00 zoned_time4 = datetime(2020, 7, 8, 4, 23, 53, 112, tzinfo=tz)print(7, zoned_time4.isoformat()) # 2020-07-08T04:23:53.000112+08:00 print(8, zoned_time2.isoformat()) # 2020-07-08T04:30:26.221543+08:00

輸出為, 已加到上面源代碼中

1 2020-07-08T04:30:26.221450+08002 2020-07-08T04:30:26.221543+08003 2020-07-07T20:30:26.2218484 2020-07-08T04:30:26.221543UTC+08:005 1594153826.2218956 2020-07-08 04:30:26.221895+08:007 2020-07-08T04:23:53.000112+08:008 2020-07-08T04:30:26.221543+08:00

時間字符串中要帶有時區信息,首先時間要轉換為帶時區的,如用

datetime.astimezone(tz) # 已有時間轉換為帶時區的datetime.fromtimestamp(timestamp, tz=tz) # 從 timestamp 構建 datetime 時加上時區

找到 Python 輸出標準格式的方法

從上面的輸出結果看第 8 行 2020-07-08T04:30:26.221543+08:00 接近于 Java 的 ISO_OFFSET_DATE_TIME 格式,只是毫秒段 Python 用了 6 位數字,參考 strftime-strptime-behavior 的 Python datetime 格式字符串定義找不到如何把毫秒段收縮為 3 位。

不過注意到 datetime.isoformat() 方法還有一個 timespec 可用,執行下面的代碼

from datetime import datetime, timezone, timedelta tz = timezone(timedelta(hours=+8))now = datetime.now(tz)print(now.isoformat(timespec=’milliseconds’))

輸出為

2020-07-08T04:41:10.793+08:00

這正式我們想要的。還不僅僅是,繼續往下讀,我們還需要讓 Python 支持夏令時,否則對于芝加哥時間夏天和冬天看到的都是 -5, 那是不對的。

pytz 組件構建時區

Python 也有一個通過時區名稱獲得 timezone 的組件,那就是 pytz - Python TimeZone

$ pip install pytz

測試 pytz

from datetime import datetimefrom pytz import timezone tz_shanghai = timezone(’Asia/Shanghai’)tz_chicago = timezone(’America/Chicago’) print(datetime.now(tz=tz_shanghai).isoformat(timespec=’milliseconds’))print(datetime.now(tz=tz_chicago).isoformat(timespec=’milliseconds’))

輸出為

2020-07-08T04:55:29.699+08:002020-07-07T15:55:29.699-05:00

關于夏令時與冬令時

國內實行夏令時制還是很多年前的事了,80 后初期生人或許還有些印象,就是下午放了學走到街上就能看到《新聞聯播》。為了達成一切形式的統一,我們不再實行夏令時制了,避免了造成可能的分裂。但其他國家仍然有下令時,這會造成同一個地方在一年中產生兩個時區。

例如芝加哥,在夏季時 timezone 是 -05:00, 冬季時是 -06:00.

現在就來看一下 Python 是否能正確的處理夏令時(Date Saving Time)與冬令時(Night Saving Time)。回看上面代碼是在 7 月份執行的結果,此時如果把本地時間改為 12 月份,再看輸出

2020-12-08T06:10:27.862+08:002020-12-07T16:10:27.862-06:00

上海的時區仍然為 +08:00, 而芝加哥的時區變成了 -06:00

Python 本身不支持對時令的支持,Python 只知道與 UTC 標準時區的偏移,timezone(timedelta(hours=-5),夏天冬天它的偏移都是 -5,實現夏令冬令時是由 pytz 達成的,同樣的 tz = timezone(’America/Chiago’)

夏天的結果是 Python 的 timezone(timedelta(hours=-5))冬天的結果是 Python 的 timezone(timedelta(hours=-6))

對比 Java 對時區的處理

不妨看下隔壁 Java 是如何對時區處理的,分別測試了新舊時間 API

Date today = new Date();System.out.println(new SimpleDateFormat('yyyy-MM-dd’T’HH:mm:ss.SSSXXX').format(today)); ZonedDateTime now = ZonedDateTime.now(ZoneId.of('Asia/Shanghai'));System.out.println(now.format(DateTimeFormatter.ISO_OFFSET_DATE_TIME));

2020-07-07T14:53:55.017-05:002020-07-08T03:53:55.031+08:00

小結一下

時間用 Timestamp(長整形值) 或統一的 UTC 時間存儲和傳輸,在顯示時轉換為本地時間,但存儲介質上可讀性差用 timezone(timedelta(hours=-5)) 應用時區來存儲,可讀性增強,但會有夏/冬令時間誤差問題用 pytz 的 timezone(’America/Chicago’) 由時區名來構造 timezone 很好的解決了時區和夏/冬令時的問題

以上就是Python datetime 如何處理時區信息的詳細內容,更多關于Python datetime 處理時區信息的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
99精品99| 在线亚洲成人| 蜜臀av一区二区三区| 欧洲亚洲一区二区三区| 亚洲一级少妇| 伊人久久亚洲美女图片| 欧美特黄一区| 亚洲激情国产| 日本a口亚洲| 麻豆成人91精品二区三区| 日本免费一区二区三区四区| 欧美成人基地 | 免费黄网站欧美| 日韩和欧美一区二区| 久久久久九九精品影院| 亚洲不卡av不卡一区二区| 久久精品国产www456c0m| 日韩一区精品视频| 精品中文在线| 在线成人直播| 欧美亚洲免费| 成人久久一区| 欧美一级一区| 在线国产一区| 麻豆一区在线| 亚洲精品在线国产| 久久久久久自在自线| 一区二区三区国产在线| 国产成人77亚洲精品www| 日韩午夜电影| 国产不卡精品在线| 好吊日精品视频 | 韩日一区二区| 快she精品国产999| 精品精品国产三级a∨在线| 黄色成人在线网址| 久久久久久久久成人| 蜜臀精品一区二区三区在线观看| 美女久久精品| 欧美亚洲色图校园春色| 亚洲激情黄色| 97精品视频在线看| 国产亚洲久久| 日韩av成人高清| 免费成人网www| 日韩av免费大片| 久久影院一区二区三区| 日韩av一区二区在线影视| 国产亚洲毛片| 欧美另类专区| 黑丝一区二区三区| 欧美一级精品| 九九久久婷婷| 亚洲激情五月| 亚洲二区在线| 成人羞羞在线观看网站| 精品国产亚洲日本| 国产一区二区三区网| 欧美国产另类| 国产欧美在线| 国产伦乱精品| 黄色网一区二区| 国精品产品一区| 欧美国产偷国产精品三区| 国产成人精品福利| 精品欧美一区二区三区在线观看| а√天堂8资源中文在线| 国产一区2区| 人人精品亚洲| 国产视频欧美| 日本午夜免费一区二区| 欧美韩一区二区| 午夜av不卡| 国产视频一区欧美| 丝袜亚洲另类欧美| 97成人超碰| 久久久亚洲欧洲日产| 日韩一区二区三区在线免费观看| 婷婷六月综合| 男女男精品网站| 精品国产一区二区三区av片| 99tv成人| 欧美日韩午夜电影网| 香蕉视频亚洲一级| 亚洲开心激情| 精品国产美女a久久9999| 亚洲一级高清| 欧美另类中文字幕 | 久久精品国产www456c0m| 蜜臀国产一区二区三区在线播放| 欧美一级全黄| 99久久夜色精品国产亚洲1000部| 亚洲精品大全| 日本综合字幕| 欧美在线首页| 黄色精品网站| 久久av日韩| 蜜桃av一区二区三区电影| 亚洲女同av| 中文字幕日韩亚洲| 日韩影院二区| 欧美精品导航| 无码日韩精品一区二区免费| 亚洲www啪成人一区二区| 国产精品日韩精品在线播放| 亚洲国产不卡| а√天堂8资源在线| 国产精品日本一区二区不卡视频| 尤物在线精品| 99久久亚洲精品蜜臀| 日韩综合一区| 卡一卡二国产精品| 欧美日韩精品一区二区三区视频| 久久国产高清| 免费av一区| 日韩av福利| 麻豆视频在线观看免费网站黄| 国产精品日韩精品在线播放| 日韩激情啪啪| 亚洲欧洲免费| 日韩黄色av| 国产精品自拍区| 免费在线亚洲欧美| 成人在线黄色| 久久久久久黄| 午夜精品网站| 性色一区二区| 日本不卡不码高清免费观看 | 成人精品国产亚洲| 国产在视频一区二区三区吞精| 卡一精品卡二卡三网站乱码| 精品一二三区| 中文av在线全新| 黑森林国产精品av| 日韩电影二区| 国产综合精品| 先锋影音国产一区| 日本不卡视频在线观看| 日本强好片久久久久久aaa| 国产欧美日韩精品一区二区免费| 久久国产66| 欧美天堂在线| 黄色在线网站噜噜噜| 久久国产电影| 蜜臀av性久久久久蜜臀aⅴ四虎| 中文无码久久精品| 欧美国产先锋| 日韩亚洲在线| 国产精品宾馆| 欧美特黄一区| 国产精品nxnn| 99久久激情| 日韩精选在线| 久久久五月天| 91精品国产自产观看在线| 欧美激情在线精品一区二区三区| 色在线视频观看| 综合亚洲视频| 国产成人精选| 日韩黄色av| 天堂中文av在线资源库| 视频一区视频二区在线观看| 日本特黄久久久高潮| 天堂资源在线亚洲| 国产毛片精品| 伊人久久亚洲美女图片| 久久激情五月婷婷| 日韩一级网站| 国产精区一区二区| 国产精品美女久久久| 麻豆一区二区在线| 亚欧成人精品| 欧美 日韩 国产一区二区在线视频 | 色综合五月天| 石原莉奈在线亚洲二区| 国产黄大片在线观看| 97久久超碰| 视频一区视频二区中文| 国产精品久久久久久久免费观看| 亚洲精品三级| 免费成人网www| 国产剧情一区| 色8久久久久| 一区二区三区国产在线| 国产模特精品视频久久久久| 免费福利视频一区二区三区| 精品国产乱码久久久久久樱花| 日韩精品视频一区二区三区| 亚洲精品麻豆| 视频一区二区国产| 免费看的黄色欧美网站| 99视频精品视频高清免费| 国产高潮在线| 亚洲风情在线资源| 高清不卡一区| av在线最新| 精品捆绑调教一区二区三区| 韩日一区二区| 国产中文欧美日韩在线 | 免费一级片91|