wake-up-neo.com

So ermitteln Sie die aktuelle Uhrzeit in Python

Mit welchem ​​Modul/welcher Methode wird die aktuelle Uhrzeit ermittelt?

2512
user46646

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.

2668
Harley Holcombe

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'
884
Sean James
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 .

507
ParaMeterz

Ä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'
438
Ray Vega

Wie bekomme ich die aktuelle Uhrzeit in Python?

Das time Modul

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

import time

Unix-Epochenzeit

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 Modul

Das 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

datetime's 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.)

datetime Zeitzone bewusst

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.

312
Aaron Hall

Machen

from time import time

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

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

122
maxp
>>> 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.

94
Vijay Dev

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.

56
Ethereal

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
46
Ani Menon

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)
43
bluish

Der schnellste Weg ist

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

.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'
32
emmagras

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 ...

30
C8H10N4O2

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
22
prudhvi Indana

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 ).

strftime format code table

21
Kristen G.

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'))
17
durjoy
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.

16
theBuzzyCoder

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'
16
EpsilonX

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
14
jfs

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
13
Madhusudhan R

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.

12
Ben

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'
12
Back2Basics

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)
11
y.selivonchyk
>>> import datetime, time
>>> time = strftime("%H:%M:%S:%MS", time.localtime())
>>> print time
'00:20:58:20S'
11
user2030113

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))
9
motagirl2

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.

7
kungphu

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]
7
Richie Bendall

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.

6
Amro elaswar
import datetime
date_time = str(datetime.datetime.now()).split()
date,time = date_time

Datum gibt das Datum und hrzeit die Uhrzeit aus.

6

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()
4
Anupam

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
4
Ram Prajapati
_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.

3
Bojan Petrovic

Das ist so einfach. Versuchen:

    import datetime
    date_time = str(datetime.datetime.now())
    date = date_time.split()[0]
    time = date_time.split()[1]
2
Sachin Verma

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.

2
Samuel Nde