Saya memiliki string yang mewakili cap waktu unix (yaitu "1284101485") dengan Python, dan saya ingin mengubahnya menjadi tanggal yang dapat dibaca. Ketika saya menggunakan time.strftime
, saya mendapatkan 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
sumber
sumber
Jawaban:
Gunakan
datetime
modul:sumber
.fromtimestamp()
mungkin gagal untuk tanggal yang lalu jika zona waktu lokal memiliki offset utc yang berbeda. Anda memerlukan basis data zona waktu bersejarah seperti yang disediakan olehpytz
modul (atau OS Anda). Atau hanya bekerja di UTC dan gunakan.utcfromtimestamp()
.pytz
. Jika tidak jelas; ajukan pertanyaan Stack Overflow terpisah.pytz
solusinya .Diambil dari http://seehuhn.de/pages/pdate
sumber
Jawaban yang paling banyak dipilih menyarankan menggunakan fromtimestamp yang rawan kesalahan karena menggunakan zona waktu lokal. Untuk menghindari masalah, pendekatan yang lebih baik adalah menggunakan UTC:
Di mana posix_time adalah waktu zaman Posix yang ingin Anda konversi
sumber
sumber
time.ctime()
dantime.localtime()
mungkin gagal untuk tanggal yang lalu jika zona waktu lokal memiliki offset utc yang berbeda. Anda memerlukan basis data zona waktu bersejarah seperti yang disediakan olehpytz
modul (atau OS Anda). Atau hanya bekerja di UTC dan gunakantime.gmtime()
.datetime
mungkin memberikan rentang tanggal yang lebih luas sehinggadatetime.utcfromtimestamp()
dapat digunakan alih-alihtime
fungsi.Ada dua bagian:
Cara portabel untuk mendapatkan waktu lokal yang berfungsi walaupun zona waktu lokal memiliki offset utc yang berbeda di masa lalu dan python tidak memiliki akses ke basis data tz adalah dengan menggunakan
pytz
zona waktu:Untuk menampilkannya, Anda dapat menggunakan format waktu apa pun yang didukung oleh sistem Anda mis:
Jika Anda tidak memerlukan waktu lokal, untuk mendapatkan waktu UTC yang dapat dibaca sebagai gantinya:
Jika Anda tidak peduli dengan masalah zona waktu yang mungkin memengaruhi tanggal dikembalikan atau apakah python memiliki akses ke database tz di sistem Anda:
Pada Python 3, Anda bisa mendapatkan datetime sadar-waktu hanya menggunakan stdlib (offset UTC mungkin salah jika python tidak memiliki akses ke database tz pada sistem Anda misalnya, pada Windows):
Fungsi dari
time
modul adalah pembungkus tipis di sekitar API C yang sesuai dan oleh karena itu mereka mungkin lebih portabel daripadadatetime
metode yang sesuai jika tidak, Anda juga dapat menggunakannya:sumber
Untuk stempel waktu yang dapat dibaca manusia dari stempel waktu UNIX, saya telah menggunakan ini dalam skrip sebelumnya:
Keluaran:
'26 Desember 2012'
sumber
Anda dapat mengonversi waktu saat ini seperti ini
Untuk mengonversi tanggal dalam string ke format yang berbeda.
sumber
Selain menggunakan paket waktu / waktu , panda juga dapat digunakan untuk menyelesaikan masalah yang sama. Berikut adalah cara kami menggunakan panda untuk mengonversi stempel waktu ke tanggal yang dapat dibaca :
Stempel waktu dapat dalam dua format:
13 digit (milidetik) - Untuk mengonversi milidetik hingga saat ini, gunakan:
10 digit (detik) - Untuk mengonversi detik ke tanggal, gunakan:
sumber
Dapatkan tanggal yang dapat dibaca dari timestamp dengan waktu juga, Anda juga dapat mengubah format tanggal.
sumber
Dengan Python 3.6+:
Keluaran:
Penjelasan:
type(value)
sumber
sumber
Cara lain ini dapat dilakukan menggunakan fungsi gmtime dan format;
Keluaran:
2018-10-4 11:57:44
sumber
saya baru saja berhasil menggunakan:
sumber
satu liner cepat dan kotor:
'2013-5-5-1-9-43'
sumber
Anda dapat menggunakan easy_date untuk membuatnya mudah:
sumber
strptime
danstrftime
tidak intuitif ... Dan bahkan tidak dapat dibaca ... Tapi saya mengerti dan menghargai pendapat Anda