문제

나는 _file이 피드 인 곳과 같은 RSS 피드를 반복합니다.

d = feedparser.parse(_file)
for element in d.entries: 
    print repr(element.date)

날짜 출력은 그렇게 나옵니다

u'Thu, 16 Jul 2009 15:18:22 EDT'

위의 날짜 출력을 실제로 정량화하는 방법을 이해할 수 없으므로이를 사용하여 피드 요소를 제한 할 수 있습니다. 나는 내가 요구하는 것은 어떻게 이것에서 실제 시간을 얻을 수 있는가입니다. 그래서 7 일이 더 크면이 요소를 건너 뛸 수 있습니다.

도움이 되었습니까?

해결책

FeedParser는 Python 's Time 모듈에서 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)

그런 다음 정기적 인 수학을 수행하여 몇 초가 경과한지 확인하거나 DateTime 모듈을 사용하여 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"

당신은 또한 볼 수 있습니다 날짜 시간 날짜 계산을 위해 Timedelta ()를 사용하고 사용하십시오.

설치 한 경우 날짜 기준 치수:

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

우분투를 사용하는 경우 dateutil THE에 의해 제공됩니다 python-dateutil 패키지.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top