2 Stimmen

Wie man Informationen aus den letzten 24 Stunden findet

Ich bin Anfänger in der Programmierung und ich möchte den einfachsten Weg finden, dies zu tun. Ich habe Informationen, die eine Zeile enthalten, die zeigt, wann sie in UTC-Zeit aktualisiert wurde. Jetzt möchte ich mein Programm schreiben, um zu fragen, ob die Info innerhalb der letzten 24 Stunden liegt, als die Info zu drucken. Ich arbeite in Python 3, Danke

import datetime
import urllib.request
def findEarthquake(entry):
    start= entry.find("") +7
    end= entry.find("")
    eq= entry[start:end]
    return eq
def findQuakeTime(entry):
    start= entry.find("

2voto

Ben Blank Punkte 52357

Beim Betrachten der von USGS bereitgestellten Daten scheint es, dass sie Ihnen diese Informationen bereits zur Verfügung stellen. Zum Beispiel sehe ich im ersten Eintrag , während der letzte ist.

Wenn Sie diesen Informationen vertrauen, können Sie sie genauso extrahieren wie den Titel und die Zeit:

def findQuakeAge(entry):
    start = entry.find('', start)
    age = entry[start:end]
    return age

Dann können Sie Ihre Daten filtern, basierend darauf, ob das Alter "Past day" ist oder nicht.

Aktualisierung: Und so überprüfen Sie die Daten manuell.

from datetime import datetime, timedelta

quakeTime = datetime.strptime(quakeTime, "%A, %B %d, %Y %H:%M:%S %Z")

if datetime.now() - quakeTime < timedelta(days=1):
    # Das Erdbeben war vor weniger als einem Tag

Beachten Sie, dass strptime() die Zeitzone benötigt, daher sollten Sie die -3 aus Ihrem findQuakeTime() Code entfernen.

0voto

thkala Punkte 80165

Es gibt zwei mögliche Ansätze:

  • Konvertieren Sie jede Zeile in Ihren Informationen in Ihre lokale Zeit und vergleichen Sie sie mit der aktuellen Zeit.

  • Holen Sie sich die aktuelle Zeit in UTC und vergleichen Sie sie mit den Metadaten in Ihren Informationen. Meiner Meinung nach ist diese Lösung sauberer und schneller, wenn mehrere Elemente angezeigt werden sollen, da nur eine Konvertierung erforderlich ist.

Wenn Sie keine weiteren Informationen zu Ihrer Programmiersprache, Plattform und den von Ihnen verwendeten Frameworks angeben, gibt es keinen Weg, um detailliertere Hilfe zu bieten.

BEARBEITEN:

Jetzt, da wir wissen, dass Sie Python verwenden (und Sie sollten auch erwähnen, dass es Python-3 ist, anstatt die aktuelle stabile Version) und da Ihre quakeTime-Variable anscheinend in der Form Dienstag, 7. März 2011 15:52:08 ist, hier ist ein kleines Skript, das testet, ob ein bestimmtes Datum innerhalb der letzten 24 Stunden liegt oder nicht:

import calendar
import sys
import time

def innerhalbDerLetzten24Stunden(d):
        aktuell = time.time();

        grenze = aktuell - 24 * 3600;

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

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

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

Und ein paar Anwendungsfälle:

$ date -u
Die 8. Mär 17:56:42 UTC 2011
$ python3 timetest.py 'Dienstag, 7. März 2011 17:56:08'
False
$ python3 timetest.py 'Dienstag, 7. März 2011 17:57:08'
True

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X