python 帶時區(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)
幾種不同的日期格式化方式,不同的時區(qū)時間轉(zhuǎn)換成北京時間,也就是東八區(qū)的時間,注意的是后面的時區(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ǔ)充知識:Python處理帶timezone的datetime類型
在存儲時間類型到數(shù)據(jù)庫的時候,通常使用DateTime類型。使用DateTime類型就會遇到時區(qū)timezone的問題。為了能夠處理timezone, 推薦存數(shù)據(jù)庫的使用存入的是基于UTC的時間日期,在本地取用的時候在轉(zhuǎn)成本地時間。
Python定義了抽象類tzinfo, 這個class不能直接使用。3.x版本(至少3.4, 3.5)定義了timezone class。但是這個timezone還是不如第三方pytz類好用。
還有一個問題就是如何得到本機(jī)的timezone。在time class里面可以得到一個time.timezone, 是一個基于秒的offset值。注意這個time不是datetime.time, 就是time,用于os相關(guān)的時間信息。不是很好用,推薦tzlocal庫。
安裝pytz和tzlocal
使用pip安裝就可以了。
pip install pytz
pip install tzlocal
如何使用
得到當(dāng)前時間,用于數(shù)據(jù)的存儲
from datetime import datetime
t = datetime.utcnow()
已知本地時間,需要轉(zhuǎn)成UTC時間用于存儲
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時間,轉(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 帶時區(qū)的日期格式化操作就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Conda環(huán)境導(dǎo)出與導(dǎo)入的實現(xiàn)
本文主要介紹了Conda環(huán)境導(dǎo)出與導(dǎo)入的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03Python對多屬性的重復(fù)數(shù)據(jù)去重實例
下面小編就為大家分享一篇Python對多屬性的重復(fù)數(shù)據(jù)去重實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-04-04python正則表達(dá)式re.match()匹配多個字符方法的實現(xiàn)
這篇文章主要介紹了python正則表達(dá)式re.match()匹配多個字符方法的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01python入門:argparse淺析 nargs=''+''作用
這篇文章主要介紹了python入門:argparse淺析 nargs='+'作用,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-07-07