添加者if-modified-从现在加60秒

时间:2013-07-29 17:15:22

标签: python

我是python的新手,我正在尝试做一些看似微不足道的事情:我想在http请求中添加if-not-modified标头,传递时间,现在减去60秒。我现在() - 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传递给addheaders。

到目前为止,这是我的代码:

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但是总而言之,看起来完全疯狂地经历了这么多的事情来获得像UTC中的一样简单(+)+ 60秒的UTC字符串。有更多python ninja-foo的人可以帮我看看我的方式错误吗?

1 个答案:

答案 0 :(得分:3)

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'))