python 帶時(shí)區(qū)的日期格式化操作
如下所示:
Wed, 23 Oct 2019 21:12:01 +0800
Wed, 23 Oct 2019 06:08:37 +0000 (GMT)
Fri, 11 Oct 2019 12:42:07 +0800 (CST)
Wed, 23 Oct 2019 06:08:37 +0000 (UTC)
幾種不同的日期格式化方式,不同的時(shí)區(qū)時(shí)間轉(zhuǎn)換成北京時(shí)間,也就是東八區(qū)的時(shí)間,注意的是后面的時(shí)區(qū)表示方式,
def getTimeStamp(self, date):
result = re.search(r"[\-\+]\d+", date)
if result:
time_area = result.group()
symbol = time_area[0]
offset = int(time_area[1]) + int(time_area[2])
if symbol == "+":
format_str = '%a, %d %b %Y %H:%M:%S '+ time_area
if "UTC" in date:
format_str = '%a, %d %b %Y %H:%M:%S '+ time_area+ ' (UTC)'
if "GMT" in date:
format_str = '%a, %d %b %Y %H:%M:%S ' + time_area + ' (GMT)'
if "CST" in date:
format_str = '%a, %d %b %Y %H:%M:%S ' + time_area + ' (CST)'
utcdatetime = time.strptime(date, format_str)
tempsTime = time.mktime(utcdatetime)
tempsTime = datetime.datetime.fromtimestamp(tempsTime)
if offset > 8:
offset = offset -8
tempsTime = tempsTime + datetime.timedelta(hours=offset)
localtimestamp = tempsTime.strftime("%Y-%m-%d")
else:
format_str = '%a, %d %b %Y %H:%M:%S ' + time_area
utcdatetime = time.strptime(date, format_str)
tempsTime = time.mktime(utcdatetime)
tempsTime = datetime.datetime.fromtimestamp(tempsTime)
tempsTime = tempsTime + datetime.timedelta(hours=(offset + 8))
localtimestamp = tempsTime.strftime("%Y-%m-%d")
return localtimestamp
補(bǔ)充知識(shí):Python處理帶timezone的datetime類型
在存儲(chǔ)時(shí)間類型到數(shù)據(jù)庫(kù)的時(shí)候,通常使用DateTime類型。使用DateTime類型就會(huì)遇到時(shí)區(qū)timezone的問(wèn)題。為了能夠處理timezone, 推薦存數(shù)據(jù)庫(kù)的使用存入的是基于UTC的時(shí)間日期,在本地取用的時(shí)候在轉(zhuǎn)成本地時(shí)間。
Python定義了抽象類tzinfo, 這個(gè)class不能直接使用。3.x版本(至少3.4, 3.5)定義了timezone class。但是這個(gè)timezone還是不如第三方pytz類好用。
還有一個(gè)問(wèn)題就是如何得到本機(jī)的timezone。在time class里面可以得到一個(gè)time.timezone, 是一個(gè)基于秒的offset值。注意這個(gè)time不是datetime.time, 就是time,用于os相關(guān)的時(shí)間信息。不是很好用,推薦tzlocal庫(kù)。
安裝pytz和tzlocal
使用pip安裝就可以了。
pip install pytz
pip install tzlocal
如何使用
得到當(dāng)前時(shí)間,用于數(shù)據(jù)的存儲(chǔ)
from datetime import datetime
t = datetime.utcnow()
已知本地時(shí)間,需要轉(zhuǎn)成UTC時(shí)間用于存儲(chǔ)
import pytz from tzlocal import get_localzone tz = get_localzone() #獲得本地timezone utc = pytz.utc #獲得UTC timezone dt = datetime(2016, 6, 12, 5, 0, 0) loc_dt = tz.localize(dt) #將DateTime數(shù)據(jù)貼上timezone utc_dt = loc_dt.astimezone(utc) #轉(zhuǎn)換到新的timezone
已知UTC時(shí)間,轉(zhuǎn)本地
import pytz from tzlocal import get_localzone utc = pytz.utc tz = get_localzone() t = datetime(x,x,x,x,x,x) utc_dt = utc.localize(t) loc_dt = utc_dt.astimezone(tz)
以上這篇python 帶時(shí)區(qū)的日期格式化操作就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python 中eval()函數(shù)的正確使用及其風(fēng)險(xiǎn)分析(使用示例)
eval()是一個(gè)功能強(qiáng)大的工具,但使用時(shí)必須非常小心,了解其工作原理和潛在的風(fēng)險(xiǎn)是確保安全使用的關(guān)鍵,通過(guò)遵循上述建議,可以在享受eval()帶來(lái)的便利的同時(shí),最大限度地減少安全風(fēng)險(xiǎn),本文介紹Python 中`eval()`函數(shù)的正確使用及其風(fēng)險(xiǎn)分析,感興趣的朋友一起看看吧2024-07-07
python實(shí)現(xiàn)保存網(wǎng)頁(yè)到本地示例
這篇文章主要介紹了python實(shí)現(xiàn)保存網(wǎng)頁(yè)到本地示例,需要的朋友可以參考下2014-03-03
apache部署python程序出現(xiàn)503錯(cuò)誤的解決方法
這篇文章主要給大家介紹了關(guān)于在apahce部署python程序出現(xiàn)503錯(cuò)誤的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)同樣遇到這個(gè)問(wèn)題的朋友們具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-07-07
Mac PyCharm中的.gitignore 安裝設(shè)置教程
這篇文章主要介紹了Mac PyCharm中的.gitignore 安裝設(shè)置教程,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04
基于Python的PIL庫(kù)學(xué)習(xí)詳解
這篇文章主要介紹了基于Python的PIL庫(kù)學(xué)習(xí)詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-05-05
Python利用tkinter實(shí)現(xiàn)一個(gè)簡(jiǎn)易番茄鐘的示例代碼
番茄鐘是番茄工作法使用的一個(gè)時(shí)間表,即選擇一個(gè)待完成的任務(wù),將番茄時(shí)間設(shè)為25分鐘,專注工作,中途不允許做任何與該任務(wù)無(wú)關(guān)的事,直到番茄時(shí)鐘響起,然后在紙上畫(huà)一個(gè)X短暫休息一下。本文用tkinter實(shí)現(xiàn)一個(gè)簡(jiǎn)易番茄鐘,需要的可以參考一下2022-12-12
Python操作MongoDB數(shù)據(jù)庫(kù)的方法示例
這篇文章主要介紹了Python操作MongoDB數(shù)據(jù)庫(kù)的方法,結(jié)合實(shí)例形式分析了Python命令行模式下操作MongoDB數(shù)據(jù)庫(kù)實(shí)現(xiàn)連接、查找、刪除、排序等相關(guān)操作技巧,需要的朋友可以參考下2018-01-01

