Zeit string auswerten und vergleichen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
karomi
User
Beiträge: 18
Registriert: Mittwoch 12. Juli 2006, 12:42

Hallo Allerseits,
ich habe im moment folgende Hürde zu überwinden.
Ich habe eine Zeit String und der sieht so aus:
"06/11/16,09:44:06+04"

Ich möchte mehrer Zeitstrings mit einander vergleichen und den aktuellesten nehmen.

Z.B. habe ich folgende Strings in verschiedene Datums und Uhrzeiten:
"06/11/16,09:40:06+04"
"06/11/13,09:44:06+04"
"06/11/10,10:44:06+04"
"06/10/16,09:44:06+04"

an sieht dasss die Strings im Datum, Uhrzeit verschieden sind.
Wie kann ich den aktuellesten aauswählen.

Ich bedanke mich bei euch und ich schätze dieses Forum sehr und hoffe von euch geholfen zu werden.
LG
Karomi
george
User
Beiträge: 109
Registriert: Mittwoch 11. Januar 2006, 20:28
Wohnort: Berlin

Hey,

so wie in deinem ersten Thread

Code: Alles auswählen

>>> list1 = ["06/11/16,09:40:06+04", "06/11/13,09:44:06+04", "06/11/10,10:44:06+04", "06/10/16,09:44:06+04"]
>>> max(list1)
'06/11/16,09:40:06+04'
>>>
greets george
Benutzeravatar
Blattlaus
User
Beiträge: 55
Registriert: Donnerstag 24. August 2006, 08:55

Jap, sofern die Daten so formatiert sind, geht das in der Art problemlos.
BlackJack

Nö geht nicht:

Code: Alles auswählen

In [18]: max('06/10/16,09:05:00+03', '06/10/16,10:00:00+04')
Out[18]: '06/10/16,10:00:00+04'
Das ist falsch, die erste Zeitangabe ist 5 Minuten grösser als die zweite.
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Code: Alles auswählen

import datetime
import time

def to_datetime(s):
    return datetime.datetime.fromtimestamp(
        time.mktime(time.strptime(s, '%Y-%m-%d %H:%M:%S')))
Da anhand der Doku des time-Moduls den Format-String an deine Daten anpassen. Anschließend hast du datetime-Objekte, die du wunderbar einfach vergleichen, sortieren, neu formatieren, verrechnen und anderweitig komfortabel benutzen kannst.
BlackJack

Code: Alles auswählen

import datetime


def as_datetime(datestring):
    elements = [int(datestring[i*3:i*3+2]) for i in xrange(7)]
    
    if elements[0] >= 69:
        elements[0] += 1900
    else:
        elements[0] += 2000
    
    if datestring[-3] == '-':
        elements[-1] = -elements[-1]
    
    return (datetime.datetime(*elements[:-1])
            - datetime.timedelta(hours=elements[-1]))


def main():
    datestrings = ['06/11/16,09:40:06+04',
                   '06/11/13,09:44:06+04',
                   '06/11/10,10:44:06+04',
                   '06/10/16,09:44:06+04']

    datestrings = ['06/10/16,09:05:00+03', '06/10/16,10:00:00+04']
    datestrings.sort(key=as_datetime)
    print datestrings[-1]
Antworten