Mam ciąg reprezentujący uniksowy znacznik czasu (tj. „1284101485”) w Pythonie i chciałbym przekonwertować go na czytelną datę. Kiedy używam time.strftime
, otrzymuję TypeError
:
>>>import time
>>>print time.strftime("%B %d %Y", "1284101485")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: argument must be 9-item sequence, not str
python
datetime
unix-timestamp
strftime
VeryNewToPython
źródło
źródło
Odpowiedzi:
Użyj
datetime
modułu:źródło
.fromtimestamp()
może się nie powieść dla poprzednich dat, jeśli lokalna strefa czasowa miała inne przesunięcie utc. Potrzebujesz historycznej bazy danych stref czasowych, takiej jak dostarczona przezpytz
moduł (lub system operacyjny). Lub po prostu pracuj w UTC i używaj.utcfromtimestamp()
.pytz
. Jeśli nie jest jasne; zadaj osobne pytanie dotyczące przepełnienia stosu.pytz
rozwiązanie .Zaczerpnięte z http://seehuhn.de/pages/pdate
źródło
Najczęściej głosowana odpowiedź sugeruje użycie fromtimestamp, który jest podatny na błędy, ponieważ wykorzystuje lokalną strefę czasową. Aby uniknąć problemów, lepszym rozwiązaniem jest użycie UTC:
Gdzie posix_time to czas epoki Posix, który chcesz przekonwertować
źródło
źródło
time.ctime()
itime.localtime()
może nie powieść się dla poprzednich dat, jeśli lokalna strefa czasowa miała inne przesunięcie utc. Potrzebujesz historycznej bazy danych stref czasowych, takiej jak dostarczona przezpytz
moduł (lub system operacyjny). Lub po prostu pracuj w UTC i używajtime.gmtime()
.datetime
może zapewnić szerszy zakres dat, więcdatetime.utcfromtimestamp()
może być używany zamiasttime
funkcji.Istnieją dwie części:
Przenośnym sposobem na uzyskanie czasu lokalnego, który działa, nawet jeśli lokalna strefa czasowa miała w przeszłości inne przesunięcie utc, a python nie ma dostępu do bazy danych tz, należy użyć
pytz
strefy czasowej:Aby go wyświetlić, możesz użyć dowolnego formatu czasu obsługiwanego przez Twój system, np .:
Jeśli nie potrzebujesz czasu lokalnego, aby zamiast tego uzyskać czytelny czas UTC:
Jeśli nie przejmujesz się problemami strefy czasowej, które mogą wpłynąć na datę zwrotu lub jeśli python ma dostęp do bazy danych tz w twoim systemie:
W Pythonie 3 można uzyskać strefę czasową uwzględniającą strefę czasową, używając tylko stdlib (przesunięcie UTC może być nieprawidłowe, jeśli python nie ma dostępu do bazy danych tz w systemie, np. W systemie Windows):
Funkcje z
time
modułu są cienkimi opakowaniami wokół odpowiedniego interfejsu API języka C i dlatego mogą być mniej przenośne niż odpowiedniedatetime
metody, w przeciwnym razie możesz ich również użyć:źródło
Dla czytelnego dla człowieka znacznika czasu z znacznika czasu UNIX używałem go wcześniej w skryptach:
Wynik:
„26 grudnia 2012 r.”
źródło
Możesz przekonwertować aktualny czas w ten sposób
Aby przekonwertować datę w ciągu na różne formaty.
źródło
Oprócz korzystania z pakietu czas / data / godzina , pandy mogą być również użyte do rozwiązania tego samego problemu. Oto jak możemy użyć pand do konwersji znacznika czasu na czytelną datę :
Znaczniki czasu mogą być w dwóch formatach:
13 cyfr (milisekund) - Aby przekonwertować milisekundy do tej pory, użyj:
10 cyfr (sekund) - Aby przekonwertować sekundy na datę, użyj:
źródło
Uzyskaj czytelną datę ze znacznika czasu z czasem, a także możesz zmienić format daty.
źródło
W Python 3.6+:
Wynik:
Wyjaśnienie:
type(value)
źródło
źródło
Kolejny sposób, w jaki można to zrobić za pomocą funkcji gmtime i formatowania;
Wynik:
2018-10-4 11:57:44
źródło
właśnie z powodzeniem zastosowałem:
źródło
szybka i brudna jedna wkładka:
„2013-5-5-1-9-43”
źródło
Aby ułatwić, możesz użyć easy_date :
źródło
strptime
istrftime
nie jest intuicyjny ... A nawet nieczytelny ... Ale rozumiem i szanuję twoją opinię