Apakah ada metode bawaan untuk mengonversi a date
ke datetime
dalam Python, misalnya mendapatkan datetime
untuk tengah malam dari tanggal yang diberikan? Konversi sebaliknya mudah: datetime
memiliki .date()
metode.
Apakah saya harus menelepon secara manual datetime(d.year, d.month, d.day)
?
.datetime()
metode; yang konyol adalah mereka tidak memiliki metode seperti itu.datetime.from_date()
konstruktor.Jawaban:
Anda bisa menggunakan
datetime.combine(date, time)
; untuk saat ini, Anda membuatdatetime.time
objek yang diinisialisasi ke tengah malam.sumber
datetime.combine(d, time())
time.time
atau apa pun selain adatetime.time
.Ada beberapa cara, meskipun saya percaya yang Anda sebutkan (dan tidak suka) adalah yang paling mudah dibaca.
dan sebagainya - tetapi pada dasarnya mereka semua bergantung pada mengekstraksi info dengan tepat dari
date
objek dan membajaknya kembali ke ctor atau classfunction yang sesuai untukdatetime
.sumber
datetime(d.year, d.month, d.day)
tampaknya jauh lebih mudah dibaca daripada jawaban yang diterimadatetime.combine(d, datetime.min.time())
.midnight = datetime.datetime.combine(d, datetime.time.min)
tampaknya lebih bersih (disarankan oleh@
larham1 )datetime(d.year, d.month, d.day)
lebih jelas (suatu datetime tanpa komponen waktu). Namun, ini adalah poin minor, dan menggunakan nama variabel seperti "tengah malam" membuatnya menjadi jelas apa hasilnya meskipun pembaca tidak tahu apa yangdatetime.time.min
diwakilinya.datetime(d.year, d.mont, d.day)
tidak hanya lebih jelas, lebih cepat juga .Jawaban yang diterima benar, tetapi saya lebih suka menghindari penggunaan
datetime.min.time()
karena tidak jelas bagi saya apa yang dilakukannya. Jika jelas bagi Anda, maka lebih banyak kekuatan untuk Anda. Saya juga merasakan hal yang sama tentangtimetuple
metode dan ketergantungan pada pemesanan.Menurut pendapat saya, cara eksplisit yang paling mudah dibaca untuk melakukan ini tanpa bergantung pada pembaca untuk sangat terbiasa dengan
datetime
API modul adalah:Itulah pendapat saya tentang "eksplisit lebih baik daripada implisit."
sumber
d2dt = lambda date: datetime(year=date.year, month=date.month, day=date.day)
fungsi on-liner dari jawaban ini.datetime
menyadari zona waktu. Dalam hal ini, Anda bisaimport pytz
dan kemudian menambahkantzinfo=pytz.timezone('Europe/London')
, misalnya.Anda dapat menggunakan
date.timetuple()
metode ini dan membongkar operator*
.sumber
datetime.combine
melalui jawaban @ kiamlaluno. Saya pikir itu agak pythonic, terutama mengingat membangundatetime.time
objek cenderung terlihat sepertidatetime.time(*map(int,"H:M:S".split(":")))
...Hari ini menjadi 2016, saya pikir solusi terbersih disediakan oleh panda Timestamp:
Stempel waktu adalah panda yang setara dengan datetime dan dapat dipertukarkan dengannya dalam kebanyakan kasus. Memeriksa:
Tetapi jika Anda benar-benar menginginkan data vanilla, Anda masih bisa melakukannya:
Cap waktu jauh lebih kuat daripada waktu data, antara lain ketika berhadapan dengan zona waktu. Sebenarnya, cap waktu begitu kuat sehingga sangat disayangkan mereka begitu buruk didokumentasikan ...
sumber
Salah satu cara untuk mengkonversi dari tanggal ke waktu yang belum disebutkan:
sumber
Anda dapat menggunakan easy_date untuk membuatnya mudah:
sumber
Jika Anda memerlukan sesuatu dengan cepat,
datetime_object.date()
memberi Anda tanggal objek datetime.sumber
date
kedatetime
.datetime
memiliki.date()
metode. , tekankan saya.Saya seorang pemula untuk Python. Tetapi kode ini bekerja untuk saya yang mengubah input yang ditentukan saya berikan ke datetime. Ini kodenya. Koreksi saya jika saya salah.
sumber
datetime.date()
objek, bukan string .