Mit welchem Modul/welcher Methode wird die aktuelle Uhrzeit ermittelt?
Verwenden:
>>> import datetime
>>> datetime.datetime.now()
datetime.datetime(2009, 1, 6, 15, 8, 24, 78915)
>>> print(datetime.datetime.now())
2018-07-29 09:17:13.812189
Und genau die Zeit:
>>> datetime.datetime.now().time()
datetime.time(15, 8, 24, 78915)
>>> print(datetime.datetime.now().time())
09:17:51.914526
Weitere Informationen finden Sie in der Dokumentation .
Um die Eingabe zu speichern, können Sie das Objekt datetime
aus dem Modul datetime
importieren:
>>> from datetime import datetime
Entfernen Sie dann den führenden datetime.
von allen oben genannten.
Sie können time.strftime()
verwenden:
>>> from time import gmtime, strftime
>>> strftime("%Y-%m-%d %H:%M:%S", gmtime())
'2009-01-05 22:14:39'
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
Direktiven .
Ähnlich wie Harleys Antwort , aber verwenden Sie die Funktion str()
für ein schnelles und unsauberes, etwas besser lesbares Format:
>>> from datetime import datetime
>>> str(datetime.now())
'2011-05-03 17:45:35.177000'
Wie bekomme ich die aktuelle Uhrzeit in Python?
time
ModulDas time
-Modul bietet Funktionen, die die Zeit in "Sekunden seit der Epoche" angeben, sowie andere Dienstprogramme.
import time
In diesem Format sollten Sie Zeitstempel zum Speichern in Datenbanken erhalten. Es ist eine einfache Gleitkommazahl, die in eine Ganzzahl konvertiert werden kann. Es ist auch gut für das Rechnen 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 uns als Nächstes ansehen werden, eine Speicherbeleuchtung darstellt:
>>> time.time()
1424233311.771502
Dieser Zeitstempel berücksichtigt keine Schaltsekunden, ist also nicht linear - Schaltsekunden werden ignoriert. Es entspricht zwar nicht dem internationalen UTC-Standard, ist jedoch eng und daher für die meisten Fälle von Aufzeichnungen recht gut geeignet.
Dies ist jedoch nicht ideal für die Personalplanung. 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 so darstellen, wie es von Ihrem Betriebssystem bevorzugt wird (was bedeutet, dass sie sich ändern kann, wenn Sie Ihre Systemeinstellungen ändern. Verlassen Sie sich also nicht darauf, dass dies systemübergreifend Standard ist, wie von anderen erwartet). . 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 mit ctime
in eine für Menschen lesbare Form bringen:
>>> time.ctime(1424233311.771502)
'Tue Feb 17 23:21:51 2015'
Diese Konvertierung ist auch nicht gut für die Aufzeichnung (außer in Text, der nur von Menschen analysiert wird - und mit verbesserter optischer Zeichenerkennung und künstlicher Intelligenz, denke ich, dass sich die Anzahl dieser Fälle verringern wird).
datetime
ModulDas datetime
Modul ist auch hier sehr nützlich:
>>> import datetime
datetime.datetime.now
Der datetime.now
ist eine Klassenmethode, die die aktuelle Zeit zurückgibt. Es verwendet den time.localtime
ohne die Zeitzoneninformationen (falls nicht angegeben, sonst siehe Zeitzoneninformationen weiter unten). Es gibt eine Repräsentation (mit der Sie ein äquivalentes Objekt erstellen können), die auf der Shell wiedergegeben wird, aber wenn sie gedruckt (oder in ein str
gezwungen) wird, ist sie in einem für Menschen lesbaren (und nahezu ISO) Format und in einer lexikografischen Form sort 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
utcnow
Sie können ein datetime-Objekt in UTC-Zeit, einem globalen Standard, abrufen, indem Sie folgendermaßen vorgehen:
>>> 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 während des Sommers 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 utc timezone
-Instanz angehängt, die das Objekt auch über die Zeitzone informiert (aber das Konvertieren in eine andere Zeitzone ohne die praktische pytz
Modul wird als Übung dem Leser ü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
-Zeitzone localize
-Methode oder durch Ersetzen des tzinfo-Attributs (durch replace
, dies geschieht jedoch blindlings) bewusst machen 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>)
Mit dem Modul pytz
können wir die Zeitzone unserer datetime
Objekte ermitteln und die Zeiten in Hunderte von Zeitzonen konvertieren, die im Modul pytz
verfügbar sind.
Man könnte dieses Objekt angeblich für die UTC-Zeit serialisieren und that in einer Datenbank speichern, aber es würde viel mehr Speicherplatz erfordern und fehleranfälliger sein, als nur die Unix-Epochenzeit zu speichern, die ich zuerst demonstrierte.
Die anderen Arten der Zeitanzeige sind sehr viel fehleranfälliger, insbesondere bei Daten, die aus verschiedenen Zeitzonen stammen können. Sie möchten nicht verwechseln, für welche Zeitzone eine Zeichenfolge oder ein serialisiertes datetime-Objekt bestimmt war.
Wenn Sie die Zeit mit Python für den Benutzer anzeigen, funktioniert ctime
gut, nicht in einer Tabelle (normalerweise nicht gut sortiert), sondern vielleicht in einer Uhr. Ich persönlich empfehle jedoch, beim Umgang mit der Zeit in Python entweder die Unix-Zeit oder ein UTC datetime
-Objekt mit Zeitzonenerkennung zu verwenden.
Machen
from time import time
t = time()
t
- Gleitkommazahl, 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'
Damit wird die aktuelle GMT im angegebenen Format ausgegeben. Es gibt auch eine localtime()
Methode.
Diese Seite hat mehr Details.
Alles gute Vorschläge, aber ich finde es am einfachsten, ctime()
selbst zu benutzen:
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.
Simpel und einfach:
Verwenden Sie das datetime
-Modul,
import datetime
print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'))
Ausgabe:
2017-10-17 23:48:55
ODER
Mit time
import time
print(time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime()))
Ausgabe:
2017-10-17 18:22:26
Wenn Sie die aktuelle Uhrzeit als time
-Objekt benötigen:
>>> import datetime
>>> now = datetime.datetime.now()
>>> datetime.time(now.hour, now.minute, now.second)
datetime.time(11, 23, 44)
Der schnellste Weg ist
>>> import time
>>> time.strftime("%Y%m%d")
'20130924'
.isoformat()
ist in der Dokumentation, aber noch nicht hier (dies ähnelt möglicherweise der Antwort von @Ray Vega):
>>> import datetime
>>> datetime.datetime.now().isoformat()
'2013-06-24T20:35:55.982000'
Fragen Sie doch das .S. 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 (wie ich) im DC-Bereich leben, ist die Latenz möglicherweise nicht so schlimm ...
Verwenden Sie pandas , um die aktuelle Zeit zu ermitteln und das Problem zu lösen:
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
Dies ist, was ich am Ende ging mit:
>>>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, um das Datum so zu formatieren, wie Sie es möchten (aus der Python "datetime" -Dokumentation hier ).
wenn Sie bereits numpy 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'))
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
Führen Sie dir(date)
oder beliebige Variablen einschließlich des Pakets aus. Sie können alle Attribute und Methoden abrufen, die der Variablen zugeordnet sind.
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 von y
würde 06/02/15
ergeben.
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 datetime-Objekt zurück, das die Zeit in der lokalen Zeitzone darstellt. Dieser Wert kann beispielsweise während DST-Übergängen ("Fallback") mehrdeutig sein. Um Mehrdeutigkeiten zu vermeiden, sollte eine der folgenden 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
Standardmäßig gibt die Funktion now()
die Ausgabe im Format YYYY-MM-DD HH:MM:SS:MS
zurück. Verwenden Sie das folgende Beispielskript, um das aktuelle Datum und die Uhrzeit in einem Python -Skript abzurufen und die Ergebnisse auf dem Bildschirm auszudrucken. Erstellen Sie die 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 Begründung. Dies ist die Pendelbibliothek , die die Art von Dingen zu tun scheint, die Pfeil versucht hat, außer ohne die inhärenten Fehler und Käfer, die Pfeil belasten.
Zum Beispiel die Antwort auf die ursprüngliche Frage:
>>> import pendulum
>>> print(pendulum.now())
2018-08-14T05:29:28.315802+10:00
>>> print(pendulum.utcnow())
2018-08-13T19:29:35.051023+00:00
Es gibt eine Reihe von Standards, die behandelt werden müssen, einschließlich mehrerer RFCs und ISOs, über die man sich Gedanken machen muss. Bring sie jemals durcheinander; Keine Sorge, werfen Sie einen Blick auf dir(pendulum.constants)
Es gibt jedoch noch ein bisschen mehr als 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 Ihnen irgendwo anders.
Und weiter geht es. Kurz gesagt: Pendulum versucht, nach Datum und Uhrzeit zu ermitteln, was für HTTP-Anforderungen erforderlich war. Es ist eine Überlegung wert, insbesondere wegen seiner Benutzerfreundlichkeit und der umfangreichen Dokumentation.
Versuchen Sie das Pfeilmodul von http://crsmithdev.com/arrow/ :
import arrow
arrow.now()
Oder die UTC-Version:
arrow.utcnow()
Um die Ausgabe zu ändern, fügen Sie .format () hinzu:
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'
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 möchte nur Millisekunden, richtig? 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
Addieren oder entfernen Sie Nullen aus der letzten Multiplikation, um die Anzahl der Dezimalstellen anzupassen, oder gehen Sie einfach wie folgt vor:
def get_time_str(decimal_points=3):
return time.strftime("%H:%M:%S", time.localtime()) + '.%d' % (time.time() % 1 * 10**decimal_points)
>>> import datetime, time
>>> time = strftime("%H:%M:%S:%MS", time.localtime())
>>> print time
'00:20:58:20S'
Wenn Sie nur den aktuellen Zeitstempel in ms anzeigen möchten (zum Beispiel, 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))
Weil es noch niemand erwähnt hat, und dies ist etwas, auf das ich kürzlich gestoßen bin ... Die fromutc () -Methode einer Pytz-Zeitzone kombiniert mit der utcnow () -Methode von datetime ist der beste Weg, um eine nützliche aktuelle Zeit (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 Sie nur die Zeit möchten, können Sie diese mit local_time.time()
abrufen.
Mit dieser Funktion können Sie die Uhrzeit abrufen (leider ohne AM oder PM):
def gettime():
from datetime import datetime
return ((str(datetime.now())).split(' ')[1]).split('.')[0]
Um die Stunden, Minuten, Sekunden und Millisekunden später zusammenzuführen, können Sie folgende Funktionen verwenden:
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]
Zweitens:
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]
Das Folgende ist, was ich benutze, um die Zeit zu bekommen, 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.
import datetime
date_time = str(datetime.datetime.now()).split()
date,time = date_time
Datum gibt das Datum und hrzeit die Uhrzeit aus.
Diese Frage ist für Python bestimmt, aber da Django eines der am häufigsten verwendeten Frameworks für Python ist, ist es wichtig zu beachten, dass Sie immer Django verwenden können Verwenden Sie timezone.now()
anstelle von datetime.datetime.now()
. Ersterer ist sich der Zeitzone bewusst, letzterer nicht.
Siehe diese SO Antwort und Django doc für Details und Gründe für timezone.now()
.
from Django.utils import timezone
now = timezone.now()
Abrufen der Attribute für die aktuelle Datums- und Uhrzeitangabe:
import datetime
currentDT = datetime.datetime.now()
print ("Current Year is: %d" % currentDT.year)
print ("Current Month is: %d" % currentDT.month)
print ("Current Day is: %d" % currentDT.day)
print ("Current Hour is: %d" % currentDT.hour)
print ("Current Minute is: %d" % currentDT.minute)
print ("Current Second is: %d" % currentDT.second)
print ("Current Microsecond is: %d" % currentDT.microsecond)
#!/usr/bin/python
import time;
ticks = time.time()
print "Number of ticks since "12:00am, Jan 1, 1970":", ticks
_from time import ctime
// Day {Mon,Tue,..}
print ctime().split()[0]
// Month {Jan, Feb,..}
print ctime().split()[1]
// Date {1,2,..}
print ctime().split()[2]
// HH:MM:SS
print ctime().split()[3]
// Year {2018,..}
print ctime().split()[4]
_
Wenn Sie ctime()
aufrufen, werden Sekunden in einen String im Format _'Day Month Date HH:MM:SS Year'
_ konvertiert (zum Beispiel: _'Wed January 17 16:53:22 2018'
_). Anschließend rufen Sie die Methode split()
auf, mit der eine Liste aus Ihrem String erstellt wird. _['Wed','Jan','17','16:56:45','2018']
_ (Standardbegrenzer ist Leerzeichen).
Klammern werden verwendet, um das gewünschte Argument in der Liste auszuwählen.
Man sollte nur eine Codezeile anrufen. Man sollte sie nicht so nennen wie ich, das war nur ein Beispiel, denn in einigen Fällen werden Sie unterschiedliche Werte erhalten, seltene, aber nicht unmögliche Fälle.
Das ist so einfach. Versuchen:
import datetime
date_time = str(datetime.datetime.now())
date = date_time.split()[0]
time = date_time.split()[1]
Importieren Sie zuerst das datetime-Modul von datetime
from datetime import datetime
Dann geben Sie die aktuelle Zeit als 'JJJJ-MM-TT HH: MM: SS' aus.
print(str(datetime.now())
Um nur die Zeit in der Form 'hh: mm: ss' zu erhalten, wobei ss für die volle Anzahl von Sekunden plus dem Sekundenbruchteil steht, tun Sie einfach Folgendes;
print(str(datetime.now()[11:])
Wenn Sie datetime.now () in einen String konvertieren, erhalten Sie eine Antwort in dem Format, das den üblichen DATEN UND ZEITEN entspricht.