zauważ, że najczęściej głosowane odpowiedzi dotyczą naiwnej czasowo strefy czasowej, podczas gdy widzimy, że w środowisku produkcyjnym coraz więcej usług na całym świecie jest połączonych ze sobą, a czas zależny od strefy czasowej staje się wymaganym standardem
Byłoby miło, gdyby ta odpowiedź obejmowała strefy czasowe (na przykład UTC) i być może zaczynała się od time.time ().
Greg Lindahl
4
@Toskan format nie był częścią pytania, więc nie powinien być częścią odpowiedzi. Udostępniono już link do dodatkowej dokumentacji modułu, która zawiera takie elementy jak formatowanie.
JiyuuSensei
W której wersji Pythona udzielono oryginalnej odpowiedzi? Samo wpisanie datetime.datetime.now()mojej interaktywnej konsoli Python 2.7 (IronPython jeszcze się nie zaktualizowało) daje mi to samo zachowanie, co nowszy przykład użyty print()w odpowiedzi. Nie powiodło się powielenie tego, co pokazuje pierwotna odpowiedź (datetime.datetime (2009, 1, 6, 15, 8, 24, 78915)). (Nie, że tak naprawdę chcę, preferowane jest zachowanie print (), ale jestem ciekawy.)
RTHarston,
@BobVicktor: Python 2.7, 3.7 i 3.8 dają to samo zachowanie, nie jestem pewien, co widzisz.
Harley Holcombe
@HarleyHolcombe Hmm ... może to jest IronPython? Kiedy piszę datetime.now()sam, drukuje to tak samo, jak pokazuje twoja odpowiedź print(datetime.now())...
Wystarczy jedynie pobrać aktualny czas, a nie wyświetlać go.
pppery
@ppperry, a następnie po prostu przypisz zmienną do odpowiedzi Raya - na przykład: myTime = str (datetime.now ()) .
Lukas
2
Nieistotne; krok „str” nie wchodzi w zakres pytania
pppery
4
@pppery Op nie mówi też, że nie chodzi o to, aby uzyskać ciąg czasu. Operacja wcale nie mówi, co chcą zrobić z czasem, więc dlaczego źle jest pokazywać, jak zamienić ją w strunę? Większość odpowiedzi mówi o otrzymywaniu ciągu od tego czasu, więc wydaje się, że jest to częsty przypadek użycia, więc po co wyróżniać odpowiedź Raya? Po co tracić czas, nie wiedząc, jak coś z tym zrobić ? Możesz go wydrukować lub wykonać na nim matematykę, a tylko kilka odpowiedzi pokazuje, jak na nim wykonać matematykę, więc myślę, że drukowanie / otrzymywanie łańcucha jest powszechnym zastosowaniem. ;-) (Wiem, że po to przyjechałem.)
RTHarston
1
Fakt, że ta odpowiedź ma ponad 440 głosów pozytywnych, sugeruje, że niewielkie dodanie metody łańcuchowej było przydatne dla wielu osób.
John
360
Jak uzyskać aktualny czas w Pythonie?
timemoduł
timeModuł udostępnia funkcje, które mówi nam czas w sekundach od „epoki”, a także innych obiektów użyteczności publicznej.
import time
Czas epoki uniksowej
Jest to format, w którym powinieneś otrzymywać znaczniki czasu do zapisywania w bazach danych. Jest to prosta liczba zmiennoprzecinkowa, którą można przekonwertować na liczbę całkowitą. Przydaje się również do arytmetyki w sekundach, ponieważ reprezentuje liczbę sekund od 1 stycznia 1970 r. 00:00:00, i jest światłem pamięci w stosunku do innych reprezentacji czasu, na które będziemy patrzeć 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. Chociaż nie jest to równoważne z międzynarodowym standardem UTC, jest bliskie, a zatem całkiem dobre w większości przypadków prowadzenia dokumentacji.
Nie jest to jednak idealne do planowania przez ludzi. Jeśli masz przyszłe zdarzenie, które ma się odbyć w określonym momencie, będziesz chciał zapisać ten czas za pomocą ciągu, który można przeanalizować w obiekcie datetime lub w serializowanym obiekcie datetime (zostaną one opisane później).
time.ctime
Możesz również reprezentować aktualny czas w sposób preferowany przez system operacyjny (co oznacza, że może on ulec zmianie po zmianie preferencji systemowych, więc nie polegaj na tym, że jest to standard we wszystkich systemach, jak zauważyłem inni) . Jest to zazwyczaj przyjazne dla użytkownika, ale zwykle nie powoduje ciągów, które można sortować chronologicznie:
>>> time.ctime()'Tue Feb 17 23:21:56 2015'
Możesz nawodnić znaczniki czasu do postaci czytelnej dla człowieka, używając ctimerównież:
>>> time.ctime(1424233311.771502)'Tue Feb 17 23:21:51 2015'
Ta konwersja nie jest również dobra do przechowywania danych (z wyjątkiem tekstu, który będzie analizowany tylko przez ludzi - i przy ulepszonym optycznym rozpoznawaniu znaków i sztucznej inteligencji, myślę, że liczba tych przypadków zmniejszy się).
datetime moduł
datetimeModuł jest również bardzo przydatne tutaj:
>>>import datetime
datetime.datetime.now
Jest datetime.nowto metoda klasowa, która zwraca bieżący czas. Wykorzystuje informacje o time.localtimestrefie czasowej bez (jeśli nie podano, w przeciwnym razie zobacz strefę czasową świadomą poniżej). Ma reprezentację (która umożliwiłaby odtworzenie równoważnego obiektu) echo na powłoce, ale po wydrukowaniu (lub przymuszeniu do a str) jest w formacie czytelnym dla człowieka (i prawie ISO), a sortowanie leksykograficzne jest równoważne sortowanie chronologiczne:
UTC jest standardem czasowym, który jest prawie równoważny strefie czasowej GMT. (Chociaż GMT i UTC nie zmieniają się dla czasu letniego, ich użytkownicy mogą przełączać się na inne strefy czasowe, takie jak brytyjski czas letni).
rozpoznanie strefy czasowej datetime
Jednak żaden z dotychczas utworzonych obiektów datetime nie może być łatwo przekonwertowany na różne strefy czasowe. Możemy rozwiązać ten problem z pytzmodułem:
>>>import pytz
>>> then = datetime.datetime.now(pytz.utc)>>> then
datetime.datetime(2015,2,18,4,55,58,753949, tzinfo=<UTC>)
Odpowiednio w Pythonie 3 mamy timezoneklasę z timezonedołączoną instancją utc , co powoduje, że obiektowa strefa czasowa jest świadoma (ale konwersję do innej strefy czasowej bez przydatnego pytzmodułu pozostawia się jako ćwiczenie dla czytelnika):
Możesz także uświadomić naiwny obiekt daty / godziny za pomocą metody pytztimezone localizelub zastępując atrybut tzinfo (z replace, odbywa się to na ślepo), ale są to bardziej ostateczności niż najlepsze praktyki:
pytzModuł pozwala nam, aby nasze datetimeobiekty stref czasowych świadomy i konwertować razy do setek stref czasowych dostępnych w pytzmodule.
Można pozornie serializacji ten obiekt dla UTC czasu i sklepu , że w bazie danych, ale wymagałoby to znacznie więcej pamięci i jest bardziej podatne na błędy niż tylko przechowywanie czas uniksowy epoka, którą wykazano w pierwszej kolejności.
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 nieporozumień co do tego, dla której strefy czasowej jest przeznaczony ciąg lub szeregowany obiekt daty / godziny.
Jeśli wyświetlasz czas w Pythonie dla użytkownika, ctimedziała dobrze, nie w tabeli (zwykle nie sortuje się dobrze), ale może w zegarze. Jednak osobiście polecam, gdy mam do czynienia z czasem w Pythonie, albo używając czasu uniksowego, albo datetimeobiektu UTC obsługującego strefę czasową .
Dlaczego nie zapytać US Naval Observatory , oficjalnego sędziego mierzącego czas w marynarce wojennej Stanów Zjednoczonych?
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])
Jeśli mieszkasz w obszarze DC (jak ja), opóźnienie może nie być takie złe ...
@ C8H10N4O2 Chociaż masz rację, że w innych odpowiedziach założono, że komputer już zna prawidłową godzinę, ta odpowiedź zakłada, że komputer ma połączenie z Internetem, że jesteś w USA i że nigdy nie usunie tego pliku / zmienić link. O wiele więcej założeń w tej odpowiedzi niż zaakceptowano. Mimo to wciąż sprytny
sudobangbang
32
Korzystanie z pand, aby uzyskać aktualny czas, rodzaj przesady problemu:
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)
>>>from time import strftime
>>>strftime("%m/%d/%Y %H:%M")01/09/201513:11
Ponadto ta tabela jest niezbędnym odniesieniem do wyboru odpowiednich kodów formatu, aby data została sformatowana dokładnie tak, jak chcesz (z dokumentacji Pythona „datetime” tutaj ).
strftime(time_format)zwraca bieżący czas lokalny jako ciąg, który odpowiada podanemu time_format. Uwaga: time.strftime()i datetime.strftime()obsługują różne zestawy dyrektyw, np. %zNie jest obsługiwane przez time.strftime()Python 2 .
jfs
1
Czy lepiej jest używać datetime zamiast czasu?
Kristen G.
2
Wiele timefunkcji modułów to cienkie opakowania wokół odpowiednich funkcji C. datetimejest wyższy poziom i zwykle jest bardziej przenośny.
jfs
24
jeśli używasz już numpy, możesz bezpośrednio użyć funkcji numpy.datetime64 ().
import numpy as np
str(np.datetime64('now'))
tylko na datę:
str(np.datetime64('today'))
lub, jeśli już używasz pand, możesz użyć funkcji pandas.to_datetime ()
datetime.now()zwraca bieżący czas jako naiwny obiekt typu data-godzina reprezentujący czas w lokalnej strefie czasowej. Ta wartość może być niejednoznaczna, np. Podczas przejść DST („cofanie się”). Aby uniknąć dwuznaczności, należy użyć dowolnej strefy czasowej UTC:
from datetime import datetime
utc_time = datetime.utcnow()print(utc_time)# -> 2014-12-22 22:48:59.916417
Lub obiekt obsługujący strefę czasową, do którego dołączone są odpowiednie informacje o strefie czasowej (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 timeprint date.year, date.month, date.day
print time.hour, time.minute, time.second, time.microsecond
Do dir(date)lub dowolne zmienne, w tym pakiet. Możesz uzyskać wszystkie atrybuty i metody powiązane ze zmienną.
Myślę, że chcesz powiedzieć „datetime.now (). Strftime (...)”
hlin117,
tak, można to zrobić tak jak powiedziałeś. „datetime.datetime.now (). strftime („% H:% M:% S:% MS ”)”
użytkownik2030113
3
% MS nie daje milisekund !!
ZF007
15
Domyślnie now()funkcja zwraca dane wyjściowe w YYYY-MM-DD HH:MM:SS:MSformacie. Użyj poniższego przykładowego skryptu, aby uzyskać bieżącą datę i godzinę w skrypcie Python i wydrukować wyniki na ekranie. Utwórz plik getDateTime1.pyz poniższą zawartością.
To pytanie nie potrzebuje nowej odpowiedzi tylko ze względu na to ... błyszcząca nowa zabawka / moduł jest jednak wystarczającym uzasadnieniem. Jest to biblioteka Pendulum , która wydaje się robić rzeczy, które próbowała strzała, chyba że bez nieodłącznych wad i błędów, które nękają strzałę.
Istnieje wiele standardów, które wymagają rozwiązania, w tym wiele RFC i ISO, aby się martwić. Kiedyś je pomieszać; nie martw się, rzuć okiem na. dir(pendulum.constants)Jest tam jednak coś więcej niż formaty RFC i ISO.
Kiedy mówimy lokalnie, co mamy na myśli? Mam na myśli:
Prawdopodobnie większość z was ma na myśli coś innego.
I to idzie. Krótko mówiąc: Wahadło próbuje ustalić datę i godzinę tego, co zrobiły żądania HTTP. Warto to rozważyć, szczególnie ze względu na łatwość użycia i obszerną dokumentację.
Chcę uzyskać czas w milisekundach. Prosty sposób na ich zdobycie:
import time, datetime
print(datetime.datetime.now().time())# 11:20:08.272239# Or in a more complicated wayprint(datetime.datetime.now().time().isoformat())# 11:20:08.272239print(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
Ale chcę tylko milisekund , prawda? Najkrótszy sposób na ich zdobycie:
import time
time.strftime("%H:%M:%S", time.localtime())+'.%d'%(time.time()%1*1000)# 11:34:23.751
Dodaj lub usuń zera z ostatniego mnożenia, aby dostosować liczbę miejsc po przecinku, lub po prostu:
Ponieważ nikt jeszcze o tym nie wspominał, a ostatnio natrafiłem na to ... metoda fromutc () pytz timezone w połączeniu z utcnow () datetime to najlepszy sposób, w jaki udało mi się uzyskać użyteczny bieżący czas (i datę) w dowolnej strefie czasowej.
Co zaskakujące, wszystkie powyższe odpowiedzi nie wspominały o strefach czasowych. powinieneś również dołączyć strftime, aby uzyskać żądany format.
GraphicalDot
1
Nie uwzględniłem tego, ponieważ zostało już omówione w innych odpowiedziach (a formatowanie ekranu nie było częścią pytania).
kungphu
7
To pytanie dotyczy Pythona, ale ponieważ Django jest jednym z najczęściej używanych frameworków dla Pythona, ważne jest, aby pamiętać, że jeśli używasz Django, zawsze możesz użyć timezone.now()zamiast niego datetime.datetime.now(). Pierwsza jest „świadoma” strefy czasowej, a druga nie.
Odpowiedzi:
Posługiwać się:
I tylko czas:
Więcej informacji znajduje się w dokumentacji .
Aby zapisać pisanie, możesz zaimportować
datetime
obiekt zdatetime
modułu:Następnie usuń prowadzenie
datetime.
ze wszystkich powyższych.źródło
datetime.datetime.now()
mojej interaktywnej konsoli Python 2.7 (IronPython jeszcze się nie zaktualizowało) daje mi to samo zachowanie, co nowszy przykład użytyprint()
w odpowiedzi. Nie powiodło się powielenie tego, co pokazuje pierwotna odpowiedź (datetime.datetime (2009, 1, 6, 15, 8, 24, 78915)). (Nie, że tak naprawdę chcę, preferowane jest zachowanie print (), ale jestem ciekawy.)datetime.now()
sam, drukuje to tak samo, jak pokazuje twoja odpowiedźprint(datetime.now())
...Możesz użyć
time.strftime()
:źródło
time
modułu vs.datetime
moduł?localtime()
zamiast,gmtime()
aby uzyskać czas lokalny.datetime
vstime
.W tym przykładzie dane wyjściowe będą wyglądać następująco:
'2013-09-18 11:16:32'
Oto lista
strftime
dyrektyw .źródło
Podobne do odpowiedzi Harleya , ale użyj tej
str()
funkcji do szybkiego i brudnego, nieco bardziej czytelnego dla człowieka formatu:źródło
time
modułtime
Moduł udostępnia funkcje, które mówi nam czas w sekundach od „epoki”, a także innych obiektów użyteczności publicznej.Czas epoki uniksowej
Jest to format, w którym powinieneś otrzymywać znaczniki czasu do zapisywania w bazach danych. Jest to prosta liczba zmiennoprzecinkowa, którą można przekonwertować na liczbę całkowitą. Przydaje się również do arytmetyki w sekundach, ponieważ reprezentuje liczbę sekund od 1 stycznia 1970 r. 00:00:00, i jest światłem pamięci w stosunku do innych reprezentacji czasu, na które będziemy patrzeć w następnej kolejności:
Ten znacznik czasu nie uwzględnia sekund przestępnych, więc nie jest liniowy - sekundy przestępne są ignorowane. Chociaż nie jest to równoważne z międzynarodowym standardem UTC, jest bliskie, a zatem całkiem dobre w większości przypadków prowadzenia dokumentacji.
Nie jest to jednak idealne do planowania przez ludzi. Jeśli masz przyszłe zdarzenie, które ma się odbyć w określonym momencie, będziesz chciał zapisać ten czas za pomocą ciągu, który można przeanalizować w obiekcie datetime lub w serializowanym obiekcie datetime (zostaną one opisane później).
time.ctime
Możesz również reprezentować aktualny czas w sposób preferowany przez system operacyjny (co oznacza, że może on ulec zmianie po zmianie preferencji systemowych, więc nie polegaj na tym, że jest to standard we wszystkich systemach, jak zauważyłem inni) . Jest to zazwyczaj przyjazne dla użytkownika, ale zwykle nie powoduje ciągów, które można sortować chronologicznie:
Możesz nawodnić znaczniki czasu do postaci czytelnej dla człowieka, używając
ctime
również:Ta konwersja nie jest również dobra do przechowywania danych (z wyjątkiem tekstu, który będzie analizowany tylko przez ludzi - i przy ulepszonym optycznym rozpoznawaniu znaków i sztucznej inteligencji, myślę, że liczba tych przypadków zmniejszy się).
datetime
modułdatetime
Moduł jest również bardzo przydatne tutaj:datetime.datetime.now
Jest
datetime.now
to metoda klasowa, która zwraca bieżący czas. Wykorzystuje informacje otime.localtime
strefie czasowej bez (jeśli nie podano, w przeciwnym razie zobacz strefę czasową świadomą poniżej). Ma reprezentację (która umożliwiłaby odtworzenie równoważnego obiektu) echo na powłoce, ale po wydrukowaniu (lub przymuszeniu do astr
) jest w formacie czytelnym dla człowieka (i prawie ISO), a sortowanie leksykograficzne jest równoważne sortowanie chronologiczne:datetime
utcnow
Możesz uzyskać obiekt datetime w czasie UTC, globalnym standardzie, wykonując następujące czynności:
UTC jest standardem czasowym, który jest prawie równoważny strefie czasowej GMT. (Chociaż GMT i UTC nie zmieniają się dla czasu letniego, ich użytkownicy mogą przełączać się na inne strefy czasowe, takie jak brytyjski czas letni).
rozpoznanie strefy czasowej datetime
Jednak żaden z dotychczas utworzonych obiektów datetime nie może być łatwo przekonwertowany na różne strefy czasowe. Możemy rozwiązać ten problem z
pytz
modułem:Odpowiednio w Pythonie 3 mamy
timezone
klasę ztimezone
dołączoną instancją utc , co powoduje, że obiektowa strefa czasowa jest świadoma (ale konwersję do innej strefy czasowej bez przydatnegopytz
modułu pozostawia się jako ćwiczenie dla czytelnika):Widzimy, że możemy łatwo przekonwertować na strefy czasowe z oryginalnego obiektu utc.
Możesz także uświadomić naiwny obiekt daty / godziny za pomocą metody
pytz
timezonelocalize
lub zastępując atrybut tzinfo (zreplace
, odbywa się to na ślepo), ale są to bardziej ostateczności niż najlepsze praktyki:pytz
Moduł pozwala nam, aby naszedatetime
obiekty stref czasowych świadomy i konwertować razy do setek stref czasowych dostępnych wpytz
module.Można pozornie serializacji ten obiekt dla UTC czasu i sklepu , że w bazie danych, ale wymagałoby to znacznie więcej pamięci i jest bardziej podatne na błędy niż tylko przechowywanie czas uniksowy epoka, którą wykazano w pierwszej kolejności.
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 nieporozumień co do tego, dla której strefy czasowej jest przeznaczony ciąg lub szeregowany obiekt daty / godziny.
Jeśli wyświetlasz czas w Pythonie dla użytkownika,
ctime
działa dobrze, nie w tabeli (zwykle nie sortuje się dobrze), ale może w zegarze. Jednak osobiście polecam, gdy mam do czynienia z czasem w Pythonie, albo używając czasu uniksowego, albodatetime
obiektu UTC obsługującego strefę czasową .źródło
Zrobić
t
- liczba zmiennoprzecinkowa, dobra do pomiaru przedziału czasu.Istnieje pewna różnica dla platform Unix i Windows.
źródło
To generuje bieżący GMT w określonym formacie. Jest też
localtime()
metoda.Ta strona ma więcej szczegółów.
źródło
Wszystkie poprzednie odpowiedzi są dobrymi sugestiami, ale uważam, że jest najłatwiejszy w użyciu
ctime()
:Daje to dobrze sformatowany ciąg znaków reprezentujący bieżący czas lokalny.
źródło
Najszybszym sposobem jest:
źródło
Jeśli potrzebujesz aktualnego czasu jako
time
obiektu:źródło
.isoformat()
znajduje się w dokumentacji, ale jeszcze jej nie ma (jest to bardzo podobne do odpowiedzi @Ray Vega):źródło
Dlaczego nie zapytać US Naval Observatory , oficjalnego sędziego mierzącego czas w marynarce wojennej Stanów Zjednoczonych?
Jeśli mieszkasz w obszarze DC (jak ja), opóźnienie może nie być takie złe ...
źródło
Korzystanie z pand, aby uzyskać aktualny czas, rodzaj przesady problemu:
Wynik:
źródło
Właśnie z tym skończyłem:
Ponadto ta tabela jest niezbędnym odniesieniem do wyboru odpowiednich kodów formatu, aby data została sformatowana dokładnie tak, jak chcesz (z dokumentacji Pythona „datetime” tutaj ).
źródło
strftime(time_format)
zwraca bieżący czas lokalny jako ciąg, który odpowiada podanemutime_format
. Uwaga:time.strftime()
idatetime.strftime()
obsługują różne zestawy dyrektyw, np.%z
Nie jest obsługiwane przeztime.strftime()
Python 2 .time
funkcji modułów to cienkie opakowania wokół odpowiednich funkcji C.datetime
jest wyższy poziom i zwykle jest bardziej przenośny.jeśli używasz już numpy, możesz bezpośrednio użyć funkcji numpy.datetime64 ().
tylko na datę:
lub, jeśli już używasz pand, możesz użyć funkcji pandas.to_datetime ()
lub,
źródło
Możesz użyć
time
modułu:Wykorzystanie kapitału
Y
daje cały rok, a wykorzystaniey
dałoby06/02/15
.Możesz również użyć następującego kodu, aby wydłużyć czas:
źródło
datetime.now()
zwraca bieżący czas jako naiwny obiekt typu data-godzina reprezentujący czas w lokalnej strefie czasowej. Ta wartość może być niejednoznaczna, np. Podczas przejść DST („cofanie się”). Aby uniknąć dwuznaczności, należy użyć dowolnej strefy czasowej UTC:Lub obiekt obsługujący strefę czasową, do którego dołączone są odpowiednie informacje o strefie czasowej (Python 3.2+):
źródło
Do
dir(date)
lub dowolne zmienne, w tym pakiet. Możesz uzyskać wszystkie atrybuty i metody powiązane ze zmienną.źródło
import datetime
to jestdatetime.datetime.now()
\ n jeślifrom datetime import datetime
to jestdatetime.now()
źródło
Domyślnie
now()
funkcja zwraca dane wyjściowe wYYYY-MM-DD HH:MM:SS:MS
formacie. Użyj poniższego przykładowego skryptu, aby uzyskać bieżącą datę i godzinę w skrypcie Python i wydrukować wyniki na ekranie. Utwórz plikgetDateTime1.py
z poniższą zawartością.Dane wyjściowe wyglądają jak poniżej:
źródło
To pytanie nie potrzebuje nowej odpowiedzi tylko ze względu na to ... błyszcząca nowa zabawka / moduł jest jednak wystarczającym uzasadnieniem. Jest to biblioteka Pendulum , która wydaje się robić rzeczy, które próbowała strzała, chyba że bez nieodłącznych wad i błędów, które nękają strzałę.
Na przykład odpowiedź na pierwotne pytanie:
Istnieje wiele standardów, które wymagają rozwiązania, w tym wiele RFC i ISO, aby się martwić. Kiedyś je pomieszać; nie martw się, rzuć okiem na.
dir(pendulum.constants)
Jest tam jednak coś więcej niż formaty RFC i ISO.Kiedy mówimy lokalnie, co mamy na myśli? Mam na myśli:
Prawdopodobnie większość z was ma na myśli coś innego.
I to idzie. Krótko mówiąc: Wahadło próbuje ustalić datę i godzinę tego, co zrobiły żądania HTTP. Warto to rozważyć, szczególnie ze względu na łatwość użycia i obszerną dokumentację.
źródło
Aktualny czas strefy czasowej
źródło
Wypróbuj moduł strzałki ze strony http://crsmithdev.com/arrow/ :
Lub wersja UTC:
Aby zmienić wynik, dodaj .format ():
Dla określonej strefy czasowej:
Godzinę temu:
Lub jeśli chcesz sedno.
źródło
arrow.now('Time/Zone')
może się nie powieść w niektórych strefach czasowych (arrow
zastosowania,dateutil
które zepsuły utc -> lokalne konwersje, które są używane w środkuarrow.now()
. Uwaga:pytz
nie ma takiego problemu . Są też inne problemy związane zeChcę uzyskać czas w milisekundach. Prosty sposób na ich zdobycie:
Ale chcę tylko milisekund , prawda? Najkrótszy sposób na ich zdobycie:
Dodaj lub usuń zera z ostatniego mnożenia, aby dostosować liczbę miejsc po przecinku, lub po prostu:
źródło
Możesz użyć tej funkcji, aby uzyskać czas (niestety nie mówi AM lub PM):
Aby uzyskać godziny, minuty, sekundy i milisekundy do scalenia później, możesz użyć następujących funkcji:
Godzina:
Minuta:
Druga:
Milisekunda:
źródło
Jeśli chcesz tylko bieżący znacznik czasu w ms (na przykład do pomiaru czasu wykonania), możesz również użyć modułu „timeit”:
źródło
Oto, czego używam, aby uzyskać czas bez konieczności formatowania. Niektórym nie podoba się metoda podziału, ale przydaje się tutaj:
Zostanie wydrukowany w formacie GG: MM: SS.
źródło
Ponieważ nikt jeszcze o tym nie wspominał, a ostatnio natrafiłem na to ... metoda fromutc () pytz timezone w połączeniu z utcnow () datetime to najlepszy sposób, w jaki udało mi się uzyskać użyteczny bieżący czas (i datę) w dowolnej strefie czasowej.
Jeśli wszystko, czego chcesz, to czas, możesz to uzyskać za pomocą
local_time.time()
.źródło
To pytanie dotyczy Pythona, ale ponieważ Django jest jednym z najczęściej używanych frameworków dla Pythona, ważne jest, aby pamiętać, że jeśli używasz Django, zawsze możesz użyć
timezone.now()
zamiast niegodatetime.datetime.now()
. Pierwsza jest „świadoma” strefy czasowej, a druga nie.Zobacz tę odpowiedź SO i dokument Django, aby uzyskać szczegółowe informacje i uzasadnienie
timezone.now()
.źródło
Możesz to zrobić za pomocą ctime ():
wynik:
Sat Sep 14 21:27:08 2019
Te dane wyjściowe są różne, ponieważ zwracany znacznik czasu
ctime()
zależy od położenia geograficznego.źródło