Mam różnicę czasu
time1 = datetime.datetime.fromtimestamp(time.mktime(time.gmtime()))
...
time2 = datetime.datetime.fromtimestamp(time.mktime(time.gmtime()))
diff = time2 - time1
Jak znaleźć całkowitą liczbę sekund, które minęły? diff.seconds
nie liczy dni. Mógłbym zrobić:
diff.seconds + diff.days * 24 * 3600
Czy jest do tego wbudowana metoda?
time1
idiff
kodem. Aby uzyskać bieżący czas utc jako naiwny obiekt datetime, użyjdatetime.utcnow()
zamiast niego. Aby zrozumieć, dlaczego należy używać UTC zamiast czasu lokalnego, aby znaleźć różnicę, zobacz Znajdź, czy minęły 24 godziny między datami - Python .time.monotonic()
lepiej byłoby znaleźć czas, jaki upłynął między zdarzeniami (zamiasttime.time()
lubdatetime.utcnow()
).Odpowiedzi:
Zastosowanie
timedelta.total_seconds()
.źródło
Masz problem z
datetime.datetime.fromtimestamp(time.mktime(time.gmtime()))
wyrażeniem.(1) Jeśli wszystko, czego potrzebujesz, to różnica między dwoma momentami w sekundach, bardzo prosta
time.time()
jest praca.(2) Jeśli używasz tych znaczników czasu do innych celów, musisz rozważyć, co robisz, ponieważ wynik ma duży zapach:
gmtime()
zwraca krotkę czasową w UTC, alemktime()
oczekuje krotki czasowej w czasie lokalnym.Jestem w Melbourne w Australii, gdzie standardem TZ jest UTC + 10, ale czas letni nadal obowiązuje do jutra rano, więc jest to UTC + 11. Kiedy wykonałem następujące czynności, to był 2011-04-02T20: 31 czasu lokalnego tutaj ... UTC był 2011-04-02T09: 31
Zauważysz, że t3, wynikiem twojego wyrażenia jest UTC + 1, który wydaje się być UTC + (moja lokalna różnica DST) ... mało znaczący. Powinieneś rozważyć użycie opcji,
datetime.datetime.utcnow()
która nie przeskoczy o godzinę, gdy DST włącza się / wyłącza i może dać ci większą precyzję niżtime.time()
źródło
Możesz użyć modułu mx.DateTime
źródło