你可以做到這一點使用pytz
通過選擇時區,然後再嘗試操作字符串和datetime
的時間GMT功能的提取,那麼你就可以在你的情況下,只選擇GMT+x
時間,這是
import pytz
from datetime import tzinfo, timedelta, datetime
GMT_1_Time_Zone = []
for tz in pytz.common_timezones:
now = datetime.now(pytz.timezone(tz))
print now
if "+0100" in now.strftime("%z"):
GMT_1_Time_Zone.append((tz, "(GMT%s) %s" % (now.strftime("%z"), tz)))
print GMT_1_Time_Zone
輸出:
[( '非洲/阿爾及爾', '(GMT + 0100)非洲/阿爾及爾'),( '非洲/班吉', '(GMT + 0100)非洲/班吉'),( 'Africa/Brazzaville','(GMT + 0100)非洲/杜阿拉','(GMT + 0100)非洲/杜阿拉',('非洲/休達','(GMT + 0100)非洲/休達'), 非洲/拉各斯',(GMT + 0100) 非洲/拉各斯'),('非洲/利伯維爾','(格林威治標準時間+0100)非洲/金沙薩'非洲/馬拉博',(非洲/馬拉博), '(GMT + 0100)非洲/馬拉博'),('Africa/Ndjamena '('GMT + 0100) Africa/Ndjamena'),('Africa/Niamey','(GMT + 0100)Africa/Niamey'), ('Africa/Porto-Novo','(GMT + 0100) (非洲/突尼斯),(非洲/突尼斯), '(GMT + 0100)非洲/突尼斯'),(' Arctic/Longyearbyen','(GMT + 0100) Arctic/Longyearbyen'),('Eur (GMT + 0100) 歐洲/阿姆斯特丹'),('歐洲/安道爾','(GMT + 0100)歐洲/安道爾'), ('Europe/Belgrade','(GMT + 0100) )歐洲/貝爾格萊德'),('Europe/Berlin', '(GMT + 0100)Europe/Berlin'),('Europe/Bratislava','(GMT + 0100) Europe/Bratislava'), ('GMT + 0100) 歐洲/布魯塞爾'),('歐洲/布達佩斯','(GMT + 0100)歐洲/布達佩斯'), ('Europe/Busingen','(GMT + 0100) ('歐洲/直布羅陀','(GMT + 0100)歐洲/直布羅陀'), ('歐洲/哥本哈根','(GMT + 0100)歐洲/哥本哈根'), ('GMT + 0100)歐洲/盧布爾雅那','(歐洲/歐洲/馬耳他',('歐洲/馬耳他', '(GMT + 0100)Europe/Malta'),('Europe/Monaco','(GMT + 0100) Europe/Monaco'),奧斯陸','(GMT + 0100)Europe/Oslo'), ('Europe/Paris','(GMT + 0100)Europe/Paris'),('Europe/Podgorica', '(GMT + 0100)Europe ('Europe/Prague','(GMT + 0100) Europe/Prague'),('Europe/Rome','(GMT + 0100)Europe/Rome'), ('Europe/San_Marino '('GMT + 0100)Europe/San_Marino'), ('Europe/Sarajevo','(GMT + 0100)Europe/Sarajevo'),('Europe/Skopje', '(GMT + 0100)Europe /歐洲/斯德哥爾摩','(GMT + 0100) Europe/Stockholm'),('Europe/Tirane','(GMT + 0100)Europe/Tirane'), ('Europe/Vaduz' ,'(GMT + 0100)Europe/Vaduz'),('Europe/Vatican',(GMT + 0100)Europe/Vatican'),('Europe/Vienna','(GMT + 0100) Europe/Vienna'),('Europe/Warsaw','(GMT + 0100)Europe/Warsaw' ), ( '歐洲/薩格勒布', '(GMT + 0100)歐洲/薩格勒布'),( '歐洲/蘇黎世', '(GMT + 0100)歐洲/蘇黎世')]
UPDATE
挖掘出問題後。我發現了兩個更好的解決方案。
from dateutil import tz
import datetime
import pytz
from datetime import datetime
dt = datetime.strptime("2014-11-02 21:00:00", "%Y-%m-%d %H:%M:%S")
dt = pytz.timezone('Etc/GMT+1').localize(dt)
dt.isoformat()
print dt
使用parser
from dateutil.parser import parse
dt = parse("2014-11-02 21:00:00" + "GMT+0100")
dt.isoformat()
print dt
這個貌似正確的答案。出於好奇,爲什麼在解析中添加了字符串?只是爲了更清楚一點嗎?似乎沒有它的工作。 – 2014-11-04 22:41:37