Pytanie Jak uzyskać aktualny czas w Pythonie


Jaki jest moduł / metoda używana do uzyskania aktualnego czasu?


1955
2018-01-06 04:54


pochodzenie




Odpowiedzi:


Posługiwać się:

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

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

I tylko czas:

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

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

To samo, ale nieco bardziej kompaktowe:

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

Widzieć dokumentacja po więcej informacji.

Aby zapisać wpisywanie, możesz zaimportować plik datetime obiekt z datetime moduł:

>>> from datetime import datetime

Następnie usuń prowadzący datetime. z wszystkich powyższych.


2009
2018-01-06 04:57



datetime.datetime.now () i datetime.datetime.today () są takie same? datetime.datetime.now (tz = None) pobiera informacje o strefie czasowej, ale datetime.datetime.today () nie docs.python.org/3.6/library/datetime.html#datetime.datetime.now - Jun
@Jun Twój komentarz wydaje się być pewnego rodzaju odpowiedzią, ale ta odpowiedź nie ma nic wspólnego z today() więc czy jesteś pewien, że jest to właściwy wpis do Twojego komentarza? - Mike - SMT
@ Mike-SMT Chciałem tylko napisać komentarz, aby inni ludzie nie musieli się rozglądać, ponieważ nie wiedziałem różnicy na początku - Jun


Możesz użyć time.strftime():

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

787
2018-01-06 04:59



Czy to jest lepsze / gorsze niż odpowiedź @ ParaMeterza poniżej? Dlaczego powinniśmy używać timemoduł kontra datetime moduł? - frank


Podobny do Odpowiedź Harleya, ale użyj str() funkcja dla szybkiego, brudnego, nieco bardziej czytelnego dla człowieka formatu:

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

408
2018-05-04 00:56



Wszystko, o co prosi, to uzyskać aktualny czas, a nie go wyświetlić. - ppperry
dlaczego ważny jest alias modułu datetime? czyli dlaczego tak nie jest import datetime praca? - Mike Palmice
@MikePalmice Działa, ale musisz napisać datetime.datetime.now(). - Gabriel


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

W tym przykładzie dane wyjściowe będą wyglądały następująco: '2013-09-18 11:16:32'

Oto lista strftime.


368
2018-01-09 05:50





Jak uzyskać aktualny czas w Pythonie?

The time moduł

The time moduł zapewnia funkcje, które mówią nam czas w "sekundach od epoki", a także inne narzędzia.

import time

Czas epoki unixa

Jest to format, w którym należy uzyskać znaczniki czasu do zapisywania w bazach danych. Jest to prosta liczba zmiennoprzecinkowa, którą można przekonwertować na liczbę całkowitą. Jest to również dobre dla arytmetyki w sekundach, ponieważ reprezentuje liczbę sekund od 1 stycznia 1970 00:00:00, i jest to światło pamięci w stosunku do innych reprezentacji czasu, które będziemy analizować w następnej kolejności:

>>> time.time()
1424233311.771502

Ten znacznik czasu nie uwzględnia sekund przestępnych, więc nie jest liniowy - sekundy przestępne są ignorowane. Tak więc, chociaż nie jest to równoważne z międzynarodowym standardem UTC, jest blisko, a zatem dość dobre dla większości przypadków prowadzenia dokumentacji.

Jednak nie jest to idealne rozwiązanie dla ludzi. Jeśli masz przyszłe wydarzenie, które chcesz odbyć w określonym momencie, będziesz chciał zapisać ten czas za pomocą ciągu, który można sparsować do obiektu datetime lub do serializowanego obiektu datetime (zostaną one opisane później).

time.ctime

Możesz także reprezentować bieżący czas w sposób preferowany przez system operacyjny (co oznacza, że ​​może się zmienić po zmianie preferencji systemu, więc nie należy polegać na tym, aby być standardem we wszystkich systemach, jak widziałem, czego inni się spodziewają) . Jest to zwykle przyjazne dla użytkownika, ale zazwyczaj nie powoduje, że łańcuchy można sortować chronologicznie:

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

Możesz uwodnić znaczniki czasu do postaci czytelnej dla człowieka ctime także:

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

Ta konwersja nie jest również dobra do prowadzenia rejestrów (z wyjątkiem tekstu, który będzie analizowany tylko przez ludzi - i dzięki ulepszonemu Optycznemu Rozpoznawaniu Znaków i Sztucznej Inteligencji, myślę, że liczba tych przypadków zmniejszy się).

datetime moduł

The datetime moduł jest również bardzo przydatny tutaj:

>>> import datetime

datetime.datetime.now

The datetime.now to metoda klasy, która zwraca bieżący czas. Korzysta z time.localtime bez informacji o strefie czasowej (jeśli nie podano, w przeciwnym razie patrz poniżej strefa czasowa). Ma reprezentację (która umożliwiłaby odtworzenie równoważnego obiektu) echo na powłoce, ale po wydrukowaniu (lub przymuszeniu do str), jest w formacie czytelnym dla człowieka (i prawie ISO), a sortowanie leksykograficzne jest równoważne z typem chronologicznym:

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

datetime utcnow

Możesz uzyskać obiekt datetime w czasie UTC, globalny standard, wykonując to:

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

UTC to standard czasowy, który jest prawie równoważny strefie czasowej GMT. (Podczas gdy GMT i UTC nie zmieniają się na czas letni, ich użytkownicy mogą przełączyć się na inne strefy czasowe, takie jak brytyjski czas letni, w lecie).

datakone świadomy

Jednak żaden z obiektów datetime, które stworzyliśmy do tej pory, nie może być łatwo przekonwertowany na różne strefy czasowe. Możemy rozwiązać ten problem z pytz moduł:

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

Równoważnie, w Pythonie 3 mamy timezone klasa z utc timezone instancja dołączona, co powoduje, że strefa czasowa obiektu jest świadoma (ale przejście na inną strefę czasową bez użycia podręcznika) pytz moduł jest pozostawiony ćwiczeniu dla czytelnika):

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

I widzimy, że możemy łatwo przekonwertować na strefy czasowe z oryginalnego obiektu utc.

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

Możesz także uczynić naiwny obiekt datetime świadomym przy pomocy pytz strefa czasowa localize metoda lub zastępując atrybut tzinfo (z replace, odbywa się to na ślepo), ale są to raczej ostatnie kurorty niż najlepsze praktyki:

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

The pytz moduł pozwala nam tworzyć nasze datetime obiekty o strefie czasowej świadome i konwertuj czasy na setki stref czasowych dostępnych w pytz moduł.

Można pozornie serializować obiekt dla czasu UTC i magazynu że w bazie danych, ale wymagałoby to znacznie więcej pamięci i bardziej podatnego na błędy niż po prostu przechowywanie czasu Epoki Uniksa, który zademonstrowałem jako pierwszy.

Inne sposoby wyświetlania czasu są znacznie bardziej podatne na błędy, szczególnie w przypadku danych, które mogą pochodzić z różnych stref czasowych. Chcesz, aby nie było żadnych wątpliwości co do strefy czasowej, do której przeznaczony jest ciąg lub serializowany obiekt datetime.

Jeśli wyświetlasz czas w Pythonie dla użytkownika, ctime działa ładnie, nie w tabeli (zwykle nie sortuje się dobrze), ale może w zegarku. Jednak osobiście polecam, gdy mamy do czynienia z czasem w Pythonie, używając czasu Unixa lub strefy czasowej UTC datetime obiekt.


207
2018-02-18 05:08





Zrobić

from time import time

t = time()
  • t - liczba zmiennoprzecinkowa, dobra do pomiaru przedziału czasu.

Jest pewna różnica w platformach Unix i Windows.


113
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'

To wyprowadza bieżący GMT w określonym formacie. Istnieje również metoda localtime ().

To strona ma więcej szczegółów.


83
2018-01-06 05:02





Wszystkie dobre sugestie, ale uważam, że jest najłatwiejszy w użyciu ctime() siebie:

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

Daje to ładnie sformatowaną ciągi reprezentujące bieżący czas lokalny.


45
2017-10-31 15:39