如何查找过去24小时的信息

2024-10-01 07:49:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我是个编程初学者,我想找到最简单的方法。我有一个信息,其中有一行显示它是在UTC时间更新的,现在我想写我的程序,询问信息是否在过去24小时内,然后再打印信息。我在Python3工作,谢谢

import datetime
import urllib.request
def findEarthquake(entry):
    start= entry.find("<titile>") +7
    end= entry.find("</title>")
    eq= entry[start:end]
    return eq
def findQuakeTime(entry):
    start= entry.find("<p>") +3
    end= entry.find("<br>") -3
    time=entry[start:end]
    return time 
page= urllib.request.urlopen("http://earthquake.usgs.gov/eqcenter/catalogs/7day-M2.5.xml")
text= page.read().decode("utf8")
start= text.find("<entry>") +7
earthquakeList=[]

while start >= 0:
    end= text.find("</entry>", start)
    entry= text[start:end]
    quake= findEarthquake(entry)
    quakeTime= findQuakeTime(entry)

Tags: textimport信息returntimerequestdeffind
2条回答

有两种可能的方法:

  • 将信息中的每一行转换为本地时间,并与当前时间进行比较。

  • 获取UTC格式的当前时间,并与信息中的元数据进行比较。在我看来,这个解决方案更干净,当显示多个项目时,它将表现得更好,因为只有一个转换是必要的。

除非您提供更多关于您的编程语言、平台和您正在使用的任何框架的信息,否则无法提供更详细的帮助。在

编辑:

既然我们知道您使用的是Python(而且您还应该提到它是Python-3,而不是当前的稳定版本),而且由于您的quakeTime变量的形式似乎是{},下面是一个小脚本,用于测试给定日期是否在最近24小时内:

import calendar
import sys
import time

def withinLast24Hours(d):
        current = time.time();

        limit = current - 24 * 3600;

        argument = calendar.timegm(time.strptime(d, '%A, %B %d, %Y %H:%M:%S'))

        if (argument > limit):
                return True
        else:
                return False

print(withinLast24Hours(sys.argv[1]))

以及几个用例:

^{pr2}$

看看美国地质勘探局提供的数据,他们似乎已经向你提供了这些信息。例如,在第一个条目中,我看到<category label="Age" term="Past day"/>,而最后一个条目是<category label="Age" term="Past week"/>。在

假设您信任此信息,您可以像提取标题和时间一样提取它:

def findQuakeAge(entry):
    start = entry.find('<category label="Age" term="') + 28
    end = entry.find('"/>', start)
    age = entry[start:end]
    return age

然后可以根据年龄是否为"Past day"过滤数据。在

更新:下面是如何手动检查日期。在

^{pr2}$

注意,^{}需要时区,因此您应该从findQuakeTime()代码中删除{}。在

相关问题 更多 >