2013-02-13 85 views
3

我與在它返回一個包含以下日期JSON字符串/時間API工作:Python的日期/時間格式化

2013-03-14T14:15:23-07:00 

我得到的日期和時間,精確到秒。但最後5個字符讓我感到困惑。我猜這是UTC偏移量。 (山區時間)我無法弄清楚如何做的是將上面的字符串與python中的日期/時間進行比較。 T也把我扔了。

如何編碼python日期/時間字符串以匹配上述?

+1

你在看[isoformat(http://docs.python.org/2/library/datetime.html#datetime.datetime.isoformat) – mgilson 2013-02-13 05:38:16

回答

2

如果使用python-dateutil庫(https://crate.io/packages/python-dateutil/),則可以將該值轉換爲datetime

>>> dateutil.parser.parse('2013-03-14T14:15:23-07:00') 
datetime.datetime(2013, 3, 14, 14, 15, 23, tzinfo=tzoffset(None, -25200)) 
+0

好極了!這正是我需要的。我現在堅持的唯一的事情是試圖以偏移量感知格式獲取當前日期時間,以便我可以比較兩者。我仍然試圖圍繞Python如何處理日期/時間來解決我的問題。 – 2013-02-14 02:05:14

+0

您應該可以在日期時間使用'.replace(tzinfo = ...)'。給它一個時區使它意識到,「無」使它天真。 – dirn 2013-02-14 05:25:40

2

您正在查看的ISO 8601日期格式。您可以使用package to parse it或自己做。

您可以使用datetime.strptime解析:

>>> ts='2013-03-14T14:15:23-07:00' 
>>> datetime.datetime.strptime(ts[0:-6],'%Y-%m-%dT%H:%M:%S') 
datetime.datetime(2013, 3, 14, 14, 15, 23) 

然後,只需加/減的增量(一個 '幼稚' 的對象):

>>> datetime.timedelta(hours=int(ts[-6:-3])) 
datetime.timedelta(-1, 61200) 

這樣:

>>> d=datetime.datetime.strptime(ts[0:-6],'%Y-%m-%dT%H:%M:%S')+datetime.timedelta(hours=int(ts[-6:-3])) 
>>> d 
datetime.datetime(2013, 3, 14, 7, 15, 23) 

棘手的部分是TZ是可選的,無論您添加/減去時間偏移量還是在日期對象中設置時區。