Frage

Wie kann ich feststellen, die Zeitdifferenz in Minuten zwischen zwei datetime Objekten?

War es hilfreich?

Lösung

>>> import datetime
>>> a = datetime.datetime.now()
>>> b = datetime.datetime.now()
>>> c = b - a
datetime.timedelta(0, 8, 562000)
>>> divmod(c.days * 86400 + c.seconds, 60)
(0, 8)      # 0 minutes, 8 seconds

Andere Tipps

Neu bei Python 2.7 ist die timedelta Instanzmethode .total_seconds(). Aus der Python-Dokumentation, ist dies gleichbedeutend mit (td.microseconds + (td.seconds + td.days * 24 * 3600) * 10**6) / 10**6.

Referenz: http://docs.python.org/2/library/datetime .html # datetime.timedelta.total_seconds

>>> import datetime
>>> time1 = datetime.datetime.now()
>>> time2 = datetime.datetime.now() # waited a few minutes before pressing enter
>>> elapsedTime = time2 - time1
>>> elapsedTime
datetime.timedelta(0, 125, 749430)
>>> divmod(elapsedTime.total_seconds(), 60)
(2.0, 5.749430000000004) # divmod returns quotient and remainder
# 2 minutes, 5.74943 seconds

Verwenden von Datetime-Beispiel

>>> from datetime import datetime
>>> then = datetime(2012, 3, 5, 23, 8, 15)        # Random date in the past
>>> now  = datetime.now()                         # Now
>>> duration = now - then                         # For build-in functions
>>> duration_in_s = duration.total_seconds()      # Total number of seconds between dates

Laufzeit in Jahren

>>> years = divmod(duration_in_s, 31556926)[0]    # Seconds in a year=31556926.

Laufzeit in Tagen

>>> days  = duration.days                         # Build-in datetime function
>>> days  = divmod(duration_in_s, 86400)[0]       # Seconds in a day = 86400

Dauer in Stunden

>>> hours = divmod(duration_in_s, 3600)[0]        # Seconds in an hour = 3600

Dauer in Minuten

>>> minutes = divmod(duration_in_s, 60)[0]        # Seconds in a minute = 60

Dauer in Sekunden

>>> seconds = duration.seconds                    # Build-in datetime function
>>> seconds = duration_in_s

Dauer in Mikrosekunden

>>> microseconds = duration.microseconds          # Build-in datetime function  

Gesamtdauer zwischen den beiden Daten

>>> days    = divmod(duration_in_s, 86400)        # Get days (without [0]!)
>>> hours   = divmod(days[1], 3600)               # Use remainder of days to calc hours
>>> minutes = divmod(hours[1], 60)                # Use remainder of hours to calc minutes
>>> seconds = divmod(minutes[1], 1)               # Use remainder of minutes to calc seconds
>>> print("Time between dates: %d days, %d hours, %d minutes and %d seconds" % (days[0], hours[0], minutes[0], seconds[0]))

oder einfach:

>>> print(now - then)

subtrahieren Nur eine von der anderen Seite. Sie erhalten ein timedelta Objekt mit dem Unterschied.

>>> import datetime
>>> d1 = datetime.datetime.now()
>>> d2 = datetime.datetime.now() # after a 5-second or so pause
>>> d2 - d1
datetime.timedelta(0, 5, 203000)

Sie können dd.days, dd.seconds und dd.microseconds auf Minuten konvertieren.

Wenn a, b Datetime-Objekte werden dann in Python die Zeitdifferenz zwischen ihnen finden 3:

from datetime import timedelta

time_difference = a - b
time_difference_in_minutes = time_difference / timedelta(minutes=1)

Bei älteren Python-Versionen:

time_difference_in_minutes = time_difference.total_seconds() / 60

Wenn a, b sind naive Datetime-Objekte wie durch datetime.now() kehrte dann kann das Ergebnis falsch sein, wenn die Objekte Ortszeit mit unterschiedlichem UTC-Offsets zum Beispiel darstellen, um DST Übergänge oder für vergangene / zukünftige Termine. Weitere Informationen:. finden, wenn 24 Stunden zwischen Datetimes bestanden haben - Python

zuverlässige Ergebnisse zu erhalten, verwenden UTC-Zeit oder Zeitzone-aware Datetime-Objekte.

Verwenden divmod:

now = int(time.time()) # epoch seconds
then = now - 90000 # some time in the past

d = divmod(now-then,86400)  # days
h = divmod(d[1],3600)  # hours
m = divmod(h[1],60)  # minutes
s = m[1]  # seconds

print '%d days, %d hours, %d minutes, %d seconds' % (d[0],h[0],m[0],s)

Dies ist, wie ich die Anzahl der Stunden erhalten, die zwischen zwei datetime.datetime Objekten verstrichene:

before = datetime.datetime.now()
after  = datetime.datetime.now()
hours  = math.floor(((after - before).seconds) / 3600)

Um nur die Anzahl der Tage: Timedelta hat ein ‚Tag‘ Attribut. Sie können einfach Abfrage des.

>>>from datetime import datetime, timedelta
>>>d1 = datetime(2015, 9, 12, 13, 9, 45)
>>>d2 = datetime(2015, 8, 29, 21, 10, 12)
>>>d3 = d1- d2
>>>print d3
13 days, 15:59:33
>>>print d3.days
13

dachte einfach es nützlich sein könnte, die Formatierung als auch in Bezug auf die Timedelta zu erwähnen. strptime () analysiert eine Zeichenfolge, die eine Zeit entsprechend einem Format darstellt.

from datetime import datetime

datetimeFormat = '%Y/%m/%d %H:%M:%S.%f'    
time1 = '2016/03/16 10:01:28.585'
time2 = '2016/03/16 09:56:28.067'  
time_dif = datetime.strptime(time1, datetimeFormat) - datetime.strptime(time2,datetimeFormat)
print(time_dif)

Dies wird ausgegeben:     0: 05: 00,518000

Ich benutze so etwas wie diese:

from datetime import datetime

def check_time_difference(t1: datetime, t2: datetime):
    t1_date = datetime(
        t1.year,
        t1.month,
        t1.day,
        t1.hour,
        t1.minute,
        t1.second)

    t2_date = datetime(
        t2.year,
        t2.month,
        t2.day,
        t2.hour,
        t2.minute,
        t2.second)

    t_elapsed = t1_date - t2_date

    return t_elapsed

# usage 
f = "%Y-%m-%d %H:%M:%S+01:00"
t1 = datetime.strptime("2018-03-07 22:56:57+01:00", f)
t2 = datetime.strptime("2018-03-07 22:48:05+01:00", f)
elapsed_time = check_time_difference(t1, t2)

print(elapsed_time)
#return : 0:08:52

Das ist der Unterschied zwischen der aktuellen Zeit und 9.30 zu finden

t=datetime.now()-datetime.now().replace(hour=9,minute=30)

Das ist mein Ansatz Mktime .

from datetime import datetime, timedelta
from time import mktime

yesterday = datetime.now() - timedelta(days=1)
today = datetime.now()

difference_in_seconds = abs(mktime(yesterday.timetuple()) - mktime(today.timetuple()))
difference_in_minutes = difference_in_seconds / 60

Weitere Möglichkeiten Unterschied zwischen Datum zu erhalten;

import dateutil.parser
import datetime
last_sent_date = "" # date string
timeDifference = current_date - dateutil.parser.parse(last_sent_date)
time_difference_in_minutes = (int(timeDifference.days) * 24 * 60) + int((timeDifference.seconds) / 60)

So Ausgang in Min erhalten.

Danke

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top