我遍歷一個RSS源,像這樣在那裏_file是飼料使用feedparser按日期限制RSS元素。 [python]的
日期輸出出來,像這樣
u'Thu, 16 Jul 2009 15:18:22 EDT'
我似乎明白如何真正量化上述日期輸出,所以我可以使用它來限制Feed元素。我所以我問的是如何得到一個實際的時間,所以我可以說如果大於7天,跳過這個元素。
我遍歷一個RSS源,像這樣在那裏_file是飼料使用feedparser按日期限制RSS元素。 [python]的
日期輸出出來,像這樣
u'Thu, 16 Jul 2009 15:18:22 EDT'
我似乎明白如何真正量化上述日期輸出,所以我可以使用它來限制Feed元素。我所以我問的是如何得到一個實際的時間,所以我可以說如果大於7天,跳過這個元素。
feedparser應該給你一個Python時間模塊的struct_time對象。我猜它不能識別日期格式,所以給你的原始字符串。
在這裏看到有關如何添加解析畸形的時間戳支持:
http://pythonhosted.org/feedparser/date-parsing.html
如果你能得到它給你struct_time,你可以閱讀更多有關在這裏:
http://docs.python.org/library/time.html#time.struct_time
struct_time對象具有您需要的一切。他們有這些成員:
time.struct_time(tm_year=2010, tm_mon=2, tm_mday=4, tm_hour=23, tm_min=44, tm_sec=19, tm_wday=3, tm_yday=35, tm_isdst=0)
我一般轉換結構到秒,這樣的:
import time
import calendar
struct = time.localtime()
seconds = calendar.timegm(struct)
然後,你可以做普通數學,看看有多少秒後,或使用日期時間模塊做timedeltas。
單程
>>> import time
>>> t=time.strptime("Thu, 16 Jul 2009 15:18:22 EDT","%a, %d %b %Y %H:%M:%S %Z")
>>> sevendays=86400*7
>>> current=time.strftime ("%s",time.localtime())
>>> if int(current) - time.mktime(t) > sevendays:
print "more than 7 days"
,你還可以看到datetime模塊,並利用timedelta()的日期計算的。
如果您安裝了dateutil模塊:
import dateutil.parser as dp
import dateutil.tz as dtz
import datetime
date_string=u'Thu, 16 Jul 2009 15:18:22 EDT'
adatetime=dp.parse(date_string)
print(adatetime)
# 2009-07-16 15:18:22-04:00
now=datetime.datetime.now(dtz.tzlocal())
print(now)
# 2010-02-04 23:35:52.428766-05:00
aweekago=now-datetime.timedelta(days=7)
print(aweekago)
# 2010-01-28 23:35:52.428766-05:00
if adatetime<aweekago:
print('old news')
如果您正在使用Ubuntu,dateutil
由python-dateutil
封裝。