Mit welchem Modul / welcher Methode wird die aktuelle Uhrzeit ermittelt?
Mit welchem Modul / welcher Methode wird die aktuelle Uhrzeit ermittelt?
Antworten:
Verwenden:
>>> import datetime
>>> datetime.datetime.now()
datetime.datetime(2009, 1, 6, 15, 8, 24, 78915)
>>> print(datetime.datetime.now())
2009-01-06 15:08:24.789150
Und genau die Zeit:
>>> datetime.datetime.now().time()
datetime.time(15, 8, 24, 78915)
>>> print(datetime.datetime.now().time())
15:08:24.789150
Siehe die DokumentationWeitere Informationen finden .
Um die Eingabe zu speichern, können Sie das datetime
Objekt aus dem datetime
Modul importieren :
>>> from datetime import datetime
Entfernen Sie dann die Leitung datetime.
von allen oben genannten.
datetime.datetime.now()
ich nur meine interaktive Python 2.7-Konsole eingebe (IronPython wurde noch nicht aktualisiert), verhalte ich das gleiche Verhalten wie im neueren Beispiel print()
in der Antwort. Ich habe nicht erfolgreich repliziert, was die ursprüngliche Antwort zeigt (datetime.datetime (2009, 1, 6, 15, 8, 24, 78915)). (Nicht, dass ich wirklich möchte, das print () -Verhalten wird bevorzugt, aber ich bin neugierig.)
datetime.now()
alleine print(datetime.now())
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'
time
Modul gegen das datetime
Modul verwenden?
localtime()
anstelle von gmtime()
, um Ihre Ortszeit abzurufen .
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 der strftime
Richtlinien .
Ähnlich wie Harleys Antwort , aber verwenden Sie die str()
Funktion für ein schnelles, etwas besser lesbares Format:
>>> from datetime import datetime
>>> str(datetime.now())
'2011-05-03 17:45:35.177000'
Wie erhalte ich die aktuelle Zeit in Python?
time
ModulDas time
Modul bietet Funktionen, die die Zeit in "Sekunden seit der Epoche" sowie andere Dienstprogramme anzeigen.
import time
Dies ist das Format, in dem Sie Zeitstempel zum Speichern in Datenbanken erhalten sollten. Es ist eine einfache Gleitkommazahl, die in eine Ganzzahl konvertiert werden kann. Es ist auch gut für die Arithmetik in Sekunden, da es die Anzahl der Sekunden seit dem 1. Januar 1970 um 00:00:00 Uhr darstellt und im Vergleich zu den anderen Zeitdarstellungen, die wir als nächstes betrachten werden, Speicherlicht ist:
>>> time.time()
1424233311.771502
Dieser Zeitstempel berücksichtigt keine Schaltsekunden, ist also nicht linear - Schaltsekunden werden ignoriert. Obwohl es nicht dem internationalen UTC-Standard entspricht, ist es nahe beieinander und daher für die meisten Fälle von Aufzeichnungen recht gut.
Dies ist jedoch nicht ideal für die menschliche Planung. Wenn Sie ein zukünftiges Ereignis haben, das zu einem bestimmten Zeitpunkt stattfinden soll, möchten Sie diese Zeit mit einer Zeichenfolge speichern, die in ein datetime-Objekt oder ein serialisiertes datetime-Objekt analysiert werden kann (diese werden später beschrieben).
time.ctime
Sie können die aktuelle Uhrzeit auch auf die von Ihrem Betriebssystem bevorzugte Weise darstellen (was bedeutet, dass sie sich ändern kann, wenn Sie Ihre Systemeinstellungen ändern. Verlassen Sie sich also nicht darauf, dass dies auf allen Systemen Standard ist, wie ich es von anderen erwartet habe). . Dies ist normalerweise benutzerfreundlich, führt jedoch normalerweise nicht zu Zeichenfolgen, die chronologisch sortiert werden können:
>>> time.ctime()
'Tue Feb 17 23:21:56 2015'
Sie können Zeitstempel auch in eine für Menschen lesbare Form bringen ctime
:
>>> time.ctime(1424233311.771502)
'Tue Feb 17 23:21:51 2015'
Diese Konvertierung eignet sich auch nicht zum Aufzeichnen von Aufzeichnungen (außer in Texten, die nur von Menschen analysiert werden - und mit verbesserter optischer Zeichenerkennung und künstlicher Intelligenz wird sich die Anzahl dieser Fälle meiner Meinung nach verringern).
datetime
ModulDas datetime
Modul ist auch hier sehr nützlich:
>>> import datetime
datetime.datetime.now
Dies datetime.now
ist eine Klassenmethode, die die aktuelle Zeit zurückgibt. Es wird die time.localtime
ohne Zeitzoneninfo verwendet (falls nicht angegeben, andernfalls siehe unten stehende Zeitzone). Es verfügt über eine Darstellung (mit der Sie ein äquivalentes Objekt neu erstellen können), die auf der Shell wiedergegeben wird. Wenn sie jedoch gedruckt (oder zu a gezwungen str
) wird, liegt sie im lesbaren (und nahezu ISO-) Format vor, und die lexikografische Sortierung entspricht der chronologische Sortierung:
>>> datetime.datetime.now()
datetime.datetime(2015, 2, 17, 23, 43, 49, 94252)
>>> print(datetime.datetime.now())
2015-02-17 23:43:51.782461
utcnow
Sie können ein Datum / Uhrzeit-Objekt in UTC-Zeit, einem globalen Standard, auf folgende Weise abrufen:
>>> 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 nahezu der GMT-Zeitzone entspricht. (Während sich GMT und UTC für die Sommerzeit nicht ändern, können ihre Benutzer im Sommer zu anderen Zeitzonen wie der britischen Sommerzeit wechseln.)
Keines der bisher erstellten datetime-Objekte kann jedoch problemlos in verschiedene Zeitzonen konvertiert werden. Wir können dieses Problem mit dem pytz
Modul lösen :
>>> import pytz
>>> then = datetime.datetime.now(pytz.utc)
>>> then
datetime.datetime(2015, 2, 18, 4, 55, 58, 753949, tzinfo=<UTC>)
Entsprechend haben wir in Python 3 die timezone
Klasse mit einer timezone
angehängten utc- Instanz, die auch die Zeitzone des Objekts bewusst macht (aber das Konvertieren in eine andere Zeitzone ohne das praktische pytz
Modul bleibt 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 vom 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 ein naives datetime-Objekt auch mit der pytz
Zeitzonenmethode localize
oder durch Ersetzen des tzinfo-Attributs (mit replace
, dies geschieht blind) bekannt machen. Dies sind jedoch mehr letzte Mittel als bewährte Methoden:
>>> 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 es uns, die datetime
Zeitzone unserer Objekte bekannt zu machen und die Zeiten in die Hunderte von Zeitzonen umzuwandeln, die im pytz
Modul verfügbar sind .
Man könnte angeblich dieses Objekt für die UTC - Zeit und Speicher serialisiert wird, dass in einer Datenbank, aber es wäre viel mehr Speicher und seinen fehleranfälliger als nur die Speicherung die Unix - Epoche Zeit erfordern, die ich zum ersten Mal unter Beweis gestellt.
Die anderen Arten der Anzeige von Zeiten sind viel fehleranfälliger, insbesondere wenn Daten verarbeitet werden, die aus verschiedenen Zeitzonen stammen können. Sie möchten, dass keine Verwirrung darüber besteht, für welche Zeitzone eine Zeichenfolge oder ein serialisiertes Datum / Uhrzeit-Objekt bestimmt war.
Wenn Sie die Zeit mit Python für den Benutzer anzeigen, ctime
funktioniert dies gut, nicht in einer Tabelle (normalerweise nicht gut sortiert), sondern möglicherweise in einer Uhr. Ich persönlich empfehle jedoch, wenn Sie sich mit Zeit in Python befassen, entweder Unix-Zeit oder ein zeitzonenbewusstes UTC- datetime
Objekt zu verwenden.
Tun
from time import time
t = time()
t
- Float-Nummer, gut für die Zeitintervallmessung.Es gibt einige Unterschiede für Unix- und Windows-Plattformen.
>>> from time import gmtime, strftime
>>> strftime("%a, %d %b %Y %X +0000", gmtime())
'Tue, 06 Jan 2009 04:54:56 +0000'
Das gibt die aktuelle GMT im angegebenen Format aus. Es gibt auch eine localtime()
Methode.
Diese Seite enthält weitere Details.
Die vorherigen Antworten sind alle gute Vorschläge, aber ich finde es am einfachsten zu verwenden ctime()
:
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 Ortszeit.
Der schnellste Weg ist:
>>> import time
>>> time.strftime("%Y%m%d")
'20130924'
Fragen Sie das US Naval Observatory , den offiziellen Zeitnehmer der United States Navy.
import requests
from lxml import html
page = requests.get('http://tycho.usno.navy.mil/cgi-bin/timer.pl')
tree = html.fromstring(page.content)
print(tree.xpath('//html//body//h3//pre/text()')[1])
Wenn Sie im DC-Bereich leben (wie ich), ist die Latenz möglicherweise nicht schlecht ...
Verwenden Sie Pandas , um die aktuelle Zeit zu ermitteln, um das vorliegende Problem zu überwinden:
import pandas as pd
print(pd.datetime.now())
print(pd.datetime.now().date())
print(pd.datetime.now().year)
print(pd.datetime.now().month)
print(pd.datetime.now().day)
print(pd.datetime.now().hour)
print(pd.datetime.now().minute)
print(pd.datetime.now().second)
print(pd.datetime.now().microsecond)
Ausgabe:
2017-09-22 12:44:56.092642
2017-09-22
2017
9
22
12
44
56
92693
Das ist, was ich am Ende gemacht habe:
>>>from time import strftime
>>>strftime("%m/%d/%Y %H:%M")
01/09/2015 13:11
Diese Tabelle ist auch eine notwendige Referenz für die Auswahl der geeigneten Formatcodes, damit das Datum genau so formatiert wird, wie Sie es möchten (aus der Python-Dokumentation "datetime" hier ).
strftime(time_format)
Gibt die aktuelle Ortszeit als Zeichenfolge zurück, die der angegebenen entspricht time_format
. Hinweis: time.strftime()
und datetime.strftime()
unterstützt verschiedene Direktivensätze, z. B. %z
wird von time.strftime()
Python 2 nicht unterstützt .
time
Modulfunktionen sind Thin Wrapper um entsprechende C-Funktionen. datetime
ist eine höhere Ebene und es ist in der Regel tragbarer.
Wenn Sie numpy bereits verwenden, können Sie direkt die Funktion numpy.datetime64 () verwenden.
import numpy as np
str(np.datetime64('now'))
für nur Datum:
str(np.datetime64('today'))
Wenn Sie bereits Pandas verwenden, können Sie die Funktion pandas.to_datetime () verwenden
import pandas as pd
str(pd.to_datetime('now'))
oder,
str(pd.to_datetime('today'))
Sie können das time
Modul verwenden:
import time
print time.strftime("%d/%m/%Y")
>>> 06/02/2015
Die Verwendung des Kapitals Y
ergibt das ganze Jahr, und die Verwendung y
würde geben06/02/15
.
Sie können auch den folgenden Code verwenden, um eine längere Zeitspanne anzugeben:
time.strftime("%a, %d %b %Y %H:%M:%S")
>>> 'Fri, 06 Feb 2015 17:45:09'
datetime.now()
Gibt die aktuelle Zeit als naives Datum / Uhrzeit-Objekt zurück, das die Zeit in der lokalen Zeitzone darstellt. Dieser Wert kann mehrdeutig sein, z. B. während der Sommerzeitübergänge ("Fallback"). Um Mehrdeutigkeiten zu vermeiden, sollte eine der UTC-Zeitzonen verwendet werden:
from datetime import datetime
utc_time = datetime.utcnow()
print(utc_time) # -> 2014-12-22 22:48:59.916417
Oder ein zeitzonenbewusstes Objekt, an das die entsprechenden Zeitzoneninformationen angehängt sind (Python 3.2+):
from datetime import datetime, timezone
now = datetime.now(timezone.utc).astimezone()
print(now) # -> 2014-12-23 01:49:25.837541+03:00
import datetime
date_time = datetime.datetime.now()
date = date_time.date() # Gives the date
time = date_time.time() # Gives the time
print date.year, date.month, date.day
print time.hour, time.minute, time.second, time.microsecond
Do dir(date)
oder beliebige Variablen einschließlich des Pakets. Sie können alle Attribute und Methoden abrufen, die der Variablen zugeordnet sind.
import datetime
dann ist es datetime.datetime.now()
\ n wenn from datetime import datetime
dann ist esdatetime.now()
>>> import datetime, time
>>> time = time.strftime("%H:%M:%S:%MS", time.localtime())
>>> print time
'00:21:38:20S'
Standardmäßig gibt die now()
Funktion die Ausgabe im YYYY-MM-DD HH:MM:SS:MS
Format zurück. Verwenden Sie das folgende Beispielskript, um das aktuelle Datum und die aktuelle Uhrzeit in einem Python-Skript abzurufen und die Ergebnisse auf dem Bildschirm zu drucken. Erstellen Sie eine Datei getDateTime1.py
mit dem folgenden Inhalt.
import datetime
currentDT = datetime.datetime.now()
print (str(currentDT))
Die Ausgabe sieht wie folgt aus:
2018-03-01 17:03:46.759624
Diese Frage braucht nicht nur deswegen eine neue Antwort ... ein glänzendes neues Spielzeug / Modul ist jedoch eine ausreichende Rechtfertigung. Das ist die Pendelbibliothek , die die Art von Dingen zu tun scheint, die Pfeil versucht hat, außer ohne die inhärenten Fehler und Bugs, die Pfeil betreffen.
Zum Beispiel die Antwort auf die ursprüngliche Frage:
>>> import pendulum
>>> print(pendulum.now())
2018-08-14T05:29:28.315802+10:00
>>> print(pendulum.now('utc'))
2018-08-13T19:29:35.051023+00:00
Es gibt viele Standards, die angesprochen werden müssen, einschließlich mehrerer RFCs und ISOs, um die man sich Sorgen machen muss. Lass sie immer durcheinander bringen; Keine Sorge, werfen Sie einen Blick darauf. dir(pendulum.constants)
Es gibt jedoch ein bisschen mehr als nur RFC- und ISO-Formate.
Wenn wir lokal sagen, was meinen wir dann? Nun, ich meine:
>>> print(pendulum.now().timezone_name)
Australia/Melbourne
>>>
Vermutlich meinen die meisten von euch woanders.
Und weiter geht es. Lange Rede, kurzer Sinn: Pendel versucht, für Datum und Uhrzeit zu tun, was Anfragen für HTTP getan haben. Es ist eine Überlegung wert, insbesondere wegen seiner Benutzerfreundlichkeit und der umfangreichen Dokumentation.
Aktuelle Zeit einer Zeitzone
from datetime import datetime
import pytz
tz_NY = pytz.timezone('America/New_York')
datetime_NY = datetime.now(tz_NY)
print("NY time:", datetime_NY.strftime("%H:%M:%S"))
tz_London = pytz.timezone('Europe/London')
datetime_London = datetime.now(tz_London)
print("London time:", datetime_London.strftime("%H:%M:%S"))
tz_India = pytz.timezone('Asia/India')
datetime_India = datetime.now(tz_India)
print("India time:", datetime_India.strftime("%H:%M:%S"))
#list timezones
pytz.all_timezones
Probieren Sie das Pfeilmodul von http://crsmithdev.com/arrow/ aus :
import arrow
arrow.now()
Oder die UTC-Version:
arrow.utcnow()
Fügen Sie .format () hinzu, um die Ausgabe zu ändern:
arrow.utcnow().format('YYYY-MM-DD HH:mm:ss ZZ')
Für eine bestimmte Zeitzone:
arrow.now('US/Pacific')
Vor einer Stunde:
arrow.utcnow().replace(hours=-1)
Oder wenn Sie das Wesentliche wollen.
arrow.get('2013-05-11T21:23:58.970460+00:00').humanize()
>>> '2 years ago'
arrow.now('Time/Zone')
für einige Zeitzonen fehlschlagen kann ( arrow
Verwendungen dateutil
, bei denen utc -> lokale Konvertierungen , die im Inneren verwendet werden , fehlerhaft sind arrow.now()
. Hinweis: Es pytz
gibt kein solches Problem . Es gibt auch andere zeitzonenbezogene Probleme
Ich möchte die Zeit mit Millisekunden bekommen. Ein einfacher Weg, um sie zu bekommen:
import time, datetime
print(datetime.datetime.now().time()) # 11:20:08.272239
# Or in a more complicated way
print(datetime.datetime.now().time().isoformat()) # 11:20:08.272239
print(datetime.datetime.now().time().strftime('%H:%M:%S.%f')) # 11:20:08.272239
# But do not use this:
print(time.strftime("%H:%M:%S.%f", time.localtime()), str) # 11:20:08.%f
Aber ich will nur Millisekunden , oder? Der kürzeste Weg, um sie zu bekommen:
import time
time.strftime("%H:%M:%S", time.localtime()) + '.%d' % (time.time() % 1 * 1000)
# 11:34:23.751
Fügen Sie Nullen zur letzten Multiplikation hinzu oder entfernen Sie sie, um die Anzahl der Dezimalstellen anzupassen, oder einfach:
def get_time_str(decimal_points=3):
return time.strftime("%H:%M:%S", time.localtime()) + '.%d' % (time.time() % 1 * 10**decimal_points)
Mit dieser Funktion können Sie die Uhrzeit abrufen (leider wird weder AM noch PM angezeigt):
def gettime():
from datetime import datetime
return ((str(datetime.now())).split(' ')[1]).split('.')[0]
Mit den folgenden Funktionen können Sie die Stunden, Minuten, Sekunden und Millisekunden später zusammenführen:
Stunde:
def gethour():
from datetime import datetime
return (((str(datetime.now())).split(' ')[1]).split('.')[0]).split(':')[0]
Minute:
def getminute():
from datetime import datetime
return (((str(datetime.now())).split(' ')[1]).split('.')[0]).split(':')[1]
Zweite:
def getsecond():
from datetime import datetime
return (((str(datetime.now())).split(' ')[1]).split('.')[0]).split(':')[2]
Millisekunde:
def getmillisecond():
from datetime import datetime
return (str(datetime.now())).split('.')[1]
Wenn Sie nur den aktuellen Zeitstempel in ms anzeigen möchten (z. B. um die Ausführungszeit zu messen), können Sie auch das Modul "timeit" verwenden:
import timeit
start_time = timeit.default_timer()
do_stuff_you_want_to_measure()
end_time = timeit.default_timer()
print("Elapsed time: {}".format(end_time - start_time))
Das Folgende ist, was ich benutze, um die Zeit zu erhalten, ohne formatieren zu müssen. Einige Leute mögen die Split-Methode nicht, aber sie ist hier nützlich:
from time import ctime
print ctime().split()[3]
Es wird im Format HH: MM: SS gedruckt.
Weil es noch niemand erwähnt hat und dies etwas ist, auf das ich kürzlich gestoßen bin ... Die fromutc () -Methode einer Pytz-Zeitzone in Kombination mit utcnow () von datetime ist der beste Weg, um eine nützliche aktuelle Uhrzeit (und ein Datum) zu erhalten. in jeder Zeitzone.
from datetime import datetime
import pytz
JST = pytz.timezone("Asia/Tokyo")
local_time = JST.fromutc(datetime.utcnow())
Wenn alles, was Sie wollen, die Zeit ist, können Sie das mit bekommen local_time.time()
.
Diese Frage bezieht sich auf Python. Da Django jedoch eines der am häufigsten verwendeten Frameworks für Python ist, ist es wichtig zu beachten, dass Sie Django immer timezone.now()
anstelle von verwenden können datetime.datetime.now()
. Ersteres ist zeitzonenbewusst, letzteres nicht.
Einzelheiten und Gründe dafür finden Sie in dieser SO-Antwort und im Django-Dokumenttimezone.now()
.
from django.utils import timezone
now = timezone.now()
Sie können dies mit ctime () tun:
from time import time, ctime
t = time()
ctime(t)
Ausgabe:
Sat Sep 14 21:27:08 2019
Diese Ausgaben sind unterschiedlich, da der von zurückgegebene Zeitstempel von ctime()
Ihrem geografischen Standort abhängt.