2016-03-25 22 views
0

Ich möchte den Moment eines Tages nur mit Stunden und Minuten filtern.Filter mit Stunden und Minuten

Zum Beispiel, eine Funktion, die wahr zurückgibt, wenn jetzt zwischen den 9.15 und 11.20 des Tages ist.

Ich versuchte mit Datetime, aber mit den Minuten ist littlebit kompliziert.

#!/usr/bin/python 

import datetime 

n = datetime.datetime.now() 
sta = datetime.time(19,18) 
sto = datetime.time(20,19) 

if sta.hour <= n.hour and n.hour <= sto.hour: 
     if sta.minute <= n.minute and sto.minute <= n.minute: 
       print str(n.hour) + ":" + str(n.minute) 

Was ist der beste Weg?

Grüße

+1

Bitte schreiben Sie den Code von dem, was Sie bisher versucht haben. –

+0

@TomDalton der Code geschrieben kann Ihnen helfen? – carbeman

Antwort

2

Sie Tupel Vergleiche mit beliebigen Subintervall Vergleiche ziemlich leicht zu tun:

>>> def f(dt): 
...  return (9, 15) <= (dt.hour, dt.minute) < (11, 21) 
... 
>>> d = datetime.datetime.now() 
>>> str(d) 
'2016-03-25 09:50:51.782718' 
>>> f(d) 
True 
>>> f(d + datetime.timedelta(hours=2) 
False 

Dies nimmt jede Datetime, die Zeit zwischen 9: 15: 00.000000 und 11: 20: 59.999999 hat.


Die obige Methode funktioniert auch, wenn Sie zum Beispiel 5 erste Minuten jeder Stunde überprüfen müssen; aber für die Stunden des Tages, könnte es einfacher sein, .time() zu verwenden, um den Zeitteil einer Datetime zu erhalten, dann vergleichen Sie das mit den Begrenzungen. Folgendes akzeptiert jederzeit zwischen 9: 15: 00.000000 und 11: 20: 00.000000 (inklusive):

>>> def f(dt): 
...  return datetime.time(9, 15) <= dt.time() <= datetime.time(11, 20) 
+0

Ich bevorzuge die erste, denn bei Vergleichen können die verstrichenen Sekunden ignoriert werden. – carbeman

0

Sie finden kombinieren Klassenmethode verwenden müssen:

import datetime 

def between(): 
    now = datetime.datetime.now() 
    start = datetime.datetime.combine(now.date(), datetime.time(9, 15)) 
    end = datetime.datetime.combine(now.date(), datetime.time(11, 20)) 
    return start <= now < end 
Verwandte Themen