Saya menggunakan modul datetime Python , yaitu:
>>> import datetime
>>> today = datetime.datetime.now()
>>> print today
2009-03-06 13:24:58.857946
dan saya ingin menghitung hari tahun yang peka terhadap tahun kabisat. misal hari ini (6 Maret 2009) adalah hari ke-65 tahun 2009. Berikut ini adalah kalkulator DateTime berbasis web .
Lagi pula, saya melihat dua opsi:
A. Buat array number_of_days_in_month = [31, 28, ...], putuskan apakah ini tahun kabisat, jumlah hari secara manual.
B. Gunakan datetime.timedelta
untuk membuat perkiraan & pencarian biner untuk hari yang benar tahun ini:
>>> import datetime
>>> YEAR = 2009
>>> DAY_OF_YEAR = 62
>>> d = datetime.date(YEAR, 1, 1) + datetime.timedelta(DAY_OF_YEAR - 1)
Keduanya terasa kikuk & aku punya firasat bahwa ada cara yang lebih "Pythonic" untuk menghitung hari dalam setahun. Ada ide / saran?
date.today()
daripadadatetime.now()
juga bekerja dan menekankan sifat operasi sedikit lebih.time.localtime().tm_yday
Tidak perlu mengubah datetime menjadi jadwal karena itulah yang dihasilkan oleh localtime ().Tidak bisa Anda gunakan
strftime
?Edit
Seperti disebutkan dalam komentar, jika Anda ingin melakukan perbandingan atau perhitungan dengan nomor ini, Anda harus mengonversinya
int()
karenastrftime()
mengembalikan sebuah string. Jika itu masalahnya, Anda lebih baik menggunakan jawaban DzinX .sumber
Jawaban DZinX adalah jawaban yang bagus untuk pertanyaan itu. Saya menemukan pertanyaan ini sambil mencari fungsi terbalik. Saya menemukan ini berfungsi:
Saya tidak yakin dengan etiket di sini, tapi saya pikir pointer ke fungsi terbalik mungkin berguna untuk orang lain seperti saya.
sumber
Saya ingin menyajikan kinerja berbagai pendekatan, pada Python 3.4, Linux x64. Kutipan dari profiler garis:
Jadi yang paling efisien adalah
sumber
Cukup kurangi tanggal 1 Januari dari tanggal:
sumber
Jika Anda memiliki alasan untuk menghindari penggunaan
datetime
modul, maka fungsi-fungsi ini akan berfungsi.sumber
Kode ini mengambil tanggal sebagai argumen input dan mengembalikan hari dalam setahun.
sumber