Jika saya memiliki dua tanggal (mis. '8/18/2008'
Dan '9/26/2008'
), apa cara terbaik untuk mendapatkan jumlah hari antara dua tanggal ini?
507
Jika Anda memiliki dua objek tanggal, Anda bisa menguranginya, yang menghitung timedelta
objek.
from datetime import date
d0 = date(2008, 8, 18)
d1 = date(2008, 9, 26)
delta = d1 - d0
print(delta.days)
Bagian yang relevan dari dokumen ini: https://docs.python.org/library/datetime.html .
Lihat jawaban ini untuk contoh lain.
np.datetime64
kepython datetime
stackoverflow.com/questions/52982056/…Menggunakan kekuatan datetime:
sumber
date
masih kurang setara denganstrptime()
.strptime
yangformat
arg? Harus jelas dengan tanggal arg pertama yang memiliki format.Hari sampai Natal:
Lebih banyak aritmatika di sini .
sumber
Anda ingin modul datetime.
Contoh lain:
Seperti yang ditunjukkan di sini
sumber
delta = today - last_year
print(delta.days)
sumber
abs()
, yang berguna ketika tanggal yang dibandingkan tidak diketahui sebelumnya dan itu adalah perbedaan yang Anda minati. Jika kencan kedua Andadatetime.strptime(date, date)
lebih lambat dari tanggal pertama, hasilnya akan negatif.abs()
membuat semua input mutlak (mis. positif).Ini juga dapat dengan mudah dilakukan dengan
arrow
:Untuk referensi: http://arrow.readthedocs.io/en/latest/
sumber
tanpa menggunakan Lib hanya kode murni:
sumber
semua orang telah menjawab dengan sangat baik menggunakan tanggal, izinkan saya mencoba untuk menjawabnya menggunakan panda
Ini akan memberikan jawabannya. Dalam hal salah satu input adalah kolom dataframe. cukup gunakan dt.days sebagai ganti hari
sumber
Ada juga
datetime.toordinal()
metode yang belum disebutkan:https://docs.python.org/3/library/datetime.html#datetime.date.toordinal
Tampaknya cocok untuk menghitung perbedaan hari, meskipun tidak dapat dibaca
timedelta.days
.sumber
(d1 - d0).days
kembali0
,d1.toordinal() - d0.toordinal()
kembali1
. Bergantung pada apa yang Anda butuhkan di usecase Anda yang sebenarnya.Untuk menghitung tanggal dan waktu, ada beberapa opsi tetapi saya akan menulis dengan cara sederhana:
Semoga ini bisa membantu
sumber
Ini mengasumsikan, tentu saja, bahwa Anda telah memverifikasi bahwa tanggal Anda dalam format
r'\d+/\d+/\d+'
.sumber
map(int, s.split('/'))
. Tidak persis terobosan, tapi sekali lagi pertanyaan ini adalah dasar yang sangat bodoh. Jawaban saya hanya menunjukkan cara lain untuk menguliti kucing.Berikut adalah tiga cara untuk mengatasi masalah ini:
sumber