Frage Wie bekomme ich die aktuelle Zeit in Python?


Was ist das Modul / die Methode, um die aktuelle Zeit zu erhalten?


1950
2018-01-06 04:54


Ursprung


Antworten:


Benutzen:

>>> import datetime
>>> datetime.datetime.now()
datetime(2009, 1, 6, 15, 8, 24, 78915)

>>> print(datetime.datetime.now())
2018-07-29 09:17:13.812189

Und gerade die Zeit:

>>> datetime.datetime.time(datetime.datetime.now())
datetime.time(15, 8, 24, 78915)

>>> print(datetime.datetime.time(datetime.datetime.now()))
09:17:51.914526

Das Gleiche, aber etwas kompakter:

>>> datetime.datetime.now().time()

Sehen die Dokumentation für mehr Informationen.

Um Tipparbeit zu sparen, können Sie das importieren datetime Objekt von der datetime Modul:

>>> from datetime import datetime

Dann entfernen Sie die führende datetime. von allen oben genannten.


1991
2018-01-06 04:57



Sie können verwenden time.strftime():

>>> from time import gmtime, strftime
>>> strftime("%Y-%m-%d %H:%M:%S", gmtime())
'2009-01-05 22:14:39'

785
2018-01-06 04:59



Ähnlich zu Harleys Antwort, aber benutze die str() Funktion für ein schnell-n-dreckiges, leicht lesbareres Format:

>>> from datetime import datetime
>>> str(datetime.now())
'2011-05-03 17:45:35.177000'

406
2018-05-04 00:56



>>> from datetime import datetime
>>> datetime.now().strftime('%Y-%m-%d %H:%M:%S')

In diesem Beispiel sieht die Ausgabe folgendermaßen aus: '2013-09-18 11:16:32'

Hier ist die Liste von strftzeit.


367
2018-01-09 05:50



Wie erhalte ich die aktuelle Zeit in Python?

Das time Modul

Das time Modul bietet Funktionen, die uns die Zeit in "Sekunden seit der Epoche" sowie andere Dienstprogramme angibt.

import time

Unix Epochenzeit

Dies ist das Format, in dem Sie Zeitstempel für das Speichern in Datenbanken erhalten sollten. Es ist eine einfache Gleitkommazahl, die in eine ganze Zahl umgewandelt werden kann. Es ist auch gut für Arithmetik in Sekunden, da es die Anzahl der Sekunden seit dem 1. Januar 1970 00:00:00 darstellt, und es ist Speicherlicht relativ zu den anderen Darstellungen der Zeit, die wir als nächstes betrachten werden:

>>> time.time()
1424233311.771502

Dieser Zeitstempel berücksichtigt keine Schaltsekunden und ist daher nicht linear - Schaltsekunden werden ignoriert. Obwohl es nicht dem internationalen UTC-Standard entspricht, ist es nahe und daher für die meisten Fälle von Aufzeichnungen recht gut.

Dies ist jedoch für eine menschliche Planung nicht ideal. Wenn Sie ein zukünftiges Ereignis haben, das Sie zu einem bestimmten Zeitpunkt durchführen möchten, sollten Sie diese Zeit mit einer Zeichenfolge speichern, die in ein Datetime-Objekt oder ein serialisiertes Datetime-Objekt geparst werden kann (diese werden später beschrieben).

time.ctime

Sie können die aktuelle Zeit auch so darstellen, wie es von Ihrem Betriebssystem bevorzugt wird (was bedeutet, dass es sich ändern kann, wenn Sie Ihre Systemeinstellungen ändern, also verlassen Sie sich nicht auf alle Systeme, wie ich es von anderen erwartet habe) . Dies ist normalerweise benutzerfreundlich, führt jedoch normalerweise nicht zu Strings, die chronologisch sortiert werden können:

>>> time.ctime()
'Tue Feb 17 23:21:56 2015'

Sie können Zeitstempel in für Menschen lesbare Form mit hydratisieren ctime auch:

>>> time.ctime(1424233311.771502)
'Tue Feb 17 23:21:51 2015'

Diese Konvertierung ist auch nicht gut für das Führen von Aufzeichnungen (außer in Text, der nur von Menschen geparst wird - und mit verbesserter optischer Zeichenerkennung und künstlicher Intelligenz, denke ich, wird die Anzahl dieser Fälle abnehmen).

datetime Modul

Das datetime Modul ist auch hier sehr nützlich:

>>> import datetime

datetime.datetime.now

Das datetime.now ist eine Klassenmethode, die die aktuelle Zeit zurückgibt. Es nutzt die time.localtime ohne die Zeitzoneninfo (falls nicht angegeben, ansonsten siehe Zeitzone unten). Es hat eine Darstellung (die es Ihnen ermöglichen würde, ein äquivalentes Objekt zu erstellen), die auf der Shell wiederholt wird, aber beim Drucken (oder in einer str), ist es in menschlich lesbaren (und fast ISO) Format, und die lexikographische Sortierung entspricht der chronologischen Sortierung:

>>> datetime.datetime.now()
datetime.datetime(2015, 2, 17, 23, 43, 49, 94252)
>>> print(datetime.datetime.now())
2015-02-17 23:43:51.782461

Datumswerte utcnow

Sie können ein Datetime-Objekt in UTC-Zeit, einem globalen Standard, erhalten, indem Sie Folgendes tun:

>>> datetime.datetime.utcnow()
datetime.datetime(2015, 2, 18, 4, 53, 28, 394163)
>>> print(datetime.datetime.utcnow())
2015-02-18 04:53:31.783988

UTC ist ein Zeitstandard, der der GMT-Zeitzone nahezu entspricht. (Während sich GMT und UTC während der Sommerzeit nicht ändern, können ihre Benutzer während des Sommers in andere Zeitzonen wie die britische Sommerzeit wechseln.)

datetime Zeitzone bewusst

Keines der von uns bisher erstellten Datetime-Objekte kann jedoch problemlos in verschiedene Zeitzonen konvertiert werden. Wir können dieses Problem mit dem lösen pytz Modul:

>>> import pytz
>>> then = datetime.datetime.now(pytz.utc)
>>> then
datetime.datetime(2015, 2, 18, 4, 55, 58, 753949, tzinfo=<UTC>)

Äquivalent, in Python 3 haben wir die timezone Klasse mit einer utc timezone Instanz angehängt, die auch die Zeitzone des Objekts kennt (aber in eine andere Zeitzone ohne das Handy umwandelt) pytz Modul wird dem Leser als Übung überlassen):

>>> datetime.datetime.now(datetime.timezone.utc)
datetime.datetime(2015, 2, 18, 22, 31, 56, 564191, tzinfo=datetime.timezone.utc)

Und wir sehen, dass wir aus dem ursprünglichen utc-Objekt leicht in Zeitzonen konvertieren können.

>>> print(then)
2015-02-18 04:55:58.753949+00:00
>>> print(then.astimezone(pytz.timezone('US/Eastern')))
2015-02-17 23:55:58.753949-05:00

Sie können auch ein naives Datetime - Objekt mit dem pytz Zeitzone localize Methode oder durch Ersetzen des Attributs tzinfo (mit replace, dies ist blind getan), aber dies sind letzte Zufluchtsorte als Best Practices:

>>> pytz.utc.localize(datetime.datetime.utcnow())
datetime.datetime(2015, 2, 18, 6, 6, 29, 32285, tzinfo=<UTC>)
>>> datetime.datetime.utcnow().replace(tzinfo=pytz.utc)
datetime.datetime(2015, 2, 18, 6, 9, 30, 728550, tzinfo=<UTC>)

Das pytz Modul ermöglicht uns, unsere zu machen datetime Objekte zeitzone bewusst und konvertieren die Zeiten in die Hunderte von Zeitzonen in der pytz Modul.

Man könnte dieses Objekt angeblich für UTC-Zeit serialisieren und speichern Das in einer Datenbank, aber es würde viel mehr Speicher benötigen und fehleranfälliger sein, als einfach die Unix-Epochenzeit zu speichern, die ich zuerst demonstriert habe.

Die anderen Anzeigemodi sind wesentlich fehleranfälliger, insbesondere wenn Daten aus verschiedenen Zeitzonen stammen. Sie möchten, dass es keine Verwirrung darüber gibt, für welche Zeitzone ein String oder ein serialisiertes Datetime-Objekt bestimmt war.

Wenn Sie die Zeit mit Python für den Benutzer anzeigen, ctime funktioniert gut, nicht in einer Tabelle (es ist in der Regel nicht gut sortiert), aber vielleicht in einer Uhr. Ich empfehle jedoch persönlich, wenn Sie mit Python arbeiten, entweder Unix-Zeit oder eine UTC-Zeitzone zu verwenden datetime Objekt.


203
2018-02-18 05:08



Machen

from time import time

t = time()
  • t - Gleitzahl, gut für Zeitintervallmessung.

Es gibt einige Unterschiede für Unix- und Windows-Plattformen.


112
2018-01-06 13:55



>>> from time import gmtime, strftime
>>> strftime("%a, %d %b %Y %X +0000", gmtime())
'Tue, 06 Jan 2009 04:54:56 +0000'

Dies gibt den aktuellen GMT im angegebenen Format aus. Es gibt auch eine localtime () -Methode.

Dies Seite hat mehr Details.


83
2018-01-06 05:02



Alle guten Vorschläge, aber ich finde es am einfachsten zu verwenden ctime() mich selber:

In [2]: from time import ctime
In [3]: ctime()
Out[3]: 'Thu Oct 31 11:40:53 2013'

Dies ergibt eine schön formatierte Zeichenfolgendarstellung der aktuellen lokalen Zeit.


44
2017-10-31 15:39



Wenn Sie aktuelle Zeit als benötigen time Objekt:

>>> import datetime
>>> now = datetime.datetime.now()
>>> datetime.time(now.hour, now.minute, now.second)
datetime.time(11, 23, 44)

35
2017-12-27 10:24



Der schnellste Weg ist

>>> import time
>>> time.strftime("%Y%m%d")
'20130924'

32
2017-09-24 11:21