Senang memperbarui ini jika saya tidak mengerti dengan benar, tetapi berikut adalah beberapa contoh yang dapat membantu. Perhatikan bahwa ini menggunakan datetime
modul alih-alih time
.
>>> import datetime
Di sini kami menyiapkan contoh stempel waktu ts
dan format f
:
>>> ts = '2013-01-12 15:27:43'
>>> f = '%Y-%m-%d %H:%M:%S'
Mirip dengan apa yang Anda lakukan di atas, kami menggunakan strptime
fungsi (dari datetime.datetime
) untuk mengubah string kita menjadi datetime
objek berdasarkan parameter pemformatan:
>>> datetime.datetime.strptime(ts, f)
datetime.datetime(2013, 1, 12, 15, 27, 43)
Sekarang secara terbalik - di sini kita menggunakan datetime.datetime.now()
untuk mendapatkan waktu saat ini sebagai datetime
objek:
>>> now = datetime.datetime.now()
>>> now
datetime.datetime(2013, 1, 12, 0, 46, 54, 490219)
Dalam datetime
kasus, strftime
metode sebenarnya dipanggil pada datetime
objek itu sendiri, dengan parameter pemformatan sebagai argumen:
>>> now.strftime(f)
'2013-01-12 00:46:54'
Dalam situasi Anda, alasan Anda mendapatkan kesalahan adalah karena time.time()
mengembalikan float:
>>> time.time()
1357980846.290231
Tapi time.strftime
membutuhkan time
tuple, mirip dengan yang Anda miliki di atas. Tanpa masuk ke spiral menjengkelkan yaitu waktu, fungsi seperti time.localtime()
akan mengembalikan time
yang disebutkan di atas Tuple dan akan kembali seperti yang Anda harapkan:
>>> now = time.localtime()
>>> now
time.struct_time(tm_year=2013, tm_mon=1, tm_mday=12, tm_hour=0, tm_min=55, tm_sec=55, tm_wday=5, tm_yday=12, tm_isdst=0)
>>> f = '%Y-%m-%d %H:%M:%S'
>>> time.strftime(f, now)
'2013-01-12 00:55:55'