2013-07-29 25 views
2

我是新來的python,我正在嘗試做一些看起來微不足道的事情:我想添加一個if-not-modified頭部給一個傳遞時間的http請求,現在加上60秒。現在() - 60秒,我遇到了一堆困難。addheaders如果修改 - 因爲現在加上60秒

我已經看了這個How do I convert local time to UTC in Python?,這How can I convert a datetime object to milliseconds since epoch (unix time) in Python?等諸多問題,但必須有比這種方法更簡單的方法:

time.strftime("%Y-%m-%d %H:%M:%S", 
       time.gmtime(time.mktime(time.strptime("2008-09-17 14:04:00", 
                "%Y-%m-%d %H:%M:%S")))) 

,以獲得正確的時間,並把它作爲一個arg給插頭。

這裏是我到目前爲止的代碼:

interval = 60 #changes other places 
timestamp = datetime.datetime.now() - datetime.timedelta(seconds=interval) 

opener.addheaders("if-modified-since", time.strftime('%a, %d %b %Y %H:%M:%S GMT', time.gmtime(time.mktime(time.strptime(timestamp, "%Y-%m-%d %H:%M:%S"))))) 

會拋出一個TypeError: expected string or buffer,但所有的一切,似乎想徹底瘋狂要經過這麼多的改寫(munging)左右,現在得到這樣簡單的事情爲()+60秒在UTC字符串中。有人可以使用更多的python ninja-foo,請幫我看看我的方式錯誤嗎?

+1

'如果 - 修改 - since'與現在+ 60似乎有些奇怪(會從現在開始,只有一分鐘才能修改文件)。你確定你不是現在的意思-60(在最後一分鐘修改) - 或'interval = -60'? – mata

+0

@mata - 是的。寫了帖子 – Brad

回答

2

datetime有一個方法utcnow它返回UTC而不是本地當前時間,這樣就可以縮短你的代碼:

from datetime import datetime, timedelta 
timestamp = datetime.utcnow() + timedelta(seconds=60) 
opener.addheaders("if-modified-since", timestamp.strftime('%a, %d %b %Y %H:%M:%S GMT')) 
+0

謝謝了。噸更好 – Brad