Cara Mengonversi String ke Datetime dengan Python
Diterbitkan: 2022-12-20Mengubah dari satu jenis data ke jenis data lainnya sangat penting dalam bahasa pemrograman apa pun. Hampir semua bahasa pemrograman mendukung konversi tipe untuk tipe data bawaan.
Tipe data khusus seperti datetime membutuhkan modul tambahan untuk konversi. Kami membutuhkan modul, terutama untuk konversi datetime
karena mengerjakannya tidak pernah mudah bagi pemrogram. Untungnya, python memiliki modul bawaan untuk bekerja dengan datetime.
Kita akan belajar cara mengonversi string datetime
menjadi objek datetime
dengan Python menggunakan modul yang berbeda. Sebelum membahasnya, mari kita lihat mengapa kita perlu mengonversinya terlebih dahulu.
Mengapa kita perlu mengubah string datetime menjadi objek datetime?
Saat kita harus bekerja dengan tanggal, tidak mudah untuk bekerja jika dalam format string. Mengonversinya ke format datetime membuat bekerja dengannya menjadi sangat mudah. Tanggal dalam string seperti string biasa. Itu tidak akan memiliki metode khusus untuk bekerja dengan tanggal. Ini akan memiliki metode string umum, yang tidak kita perlukan saat bekerja dengan tanggal.
Katakanlah kita harus membandingkan dua tanggal. Jika dalam format string, kita dapat membandingkannya dengan benar. Jika dalam format datetime
, kita bisa menggunakan operator pembanding seperti angka.
Ini hanya satu skenario di mana mengonversi ke format datetime
membuat segalanya menjadi mudah. Ada banyak skenario seperti menambahkan tanggal, mengurangi, menangani zona waktu, dll., di mana mengonversi string datetime
ke objek datetime
membuat hidup kita lebih mudah dari sebelumnya.
Dengan itu, mari kita lihat berbagai cara untuk mengonversi string datetime
menjadi objek datetime
. Kami akan menggunakan modul datetime
bawaan dan dateutil
pihak ketiga untuk mengubah string datetime
menjadi objek datetime
. Mari kita mulai dengan modul datetime
Menggunakan datetime
datetime
adalah modul bawaan Python yang digunakan untuk bekerja dengan tanggal dan waktu. Ada banyak kelas dalam modul ini yang membantu kita bekerja dengan tanggal dan waktu. Kami akan menggunakan kelas datetime.datetime
untuk konversi.
datetime.datetime
memiliki banyak metode. Kami tertarik dengan metode strptime
yang akan membantu kami dalam konversi. Mari kita periksa.
datetime.strptime
Metode datetime.strptime
digunakan untuk mengubah string datetime
menjadi objek datetime
. Dibutuhkan dua string, satu adalah string datetime
dan yang lainnya adalah format string datetime
itu. Dan itu mengembalikan objek datetime
.
Mari kita lihat contohnya
from datetime import datetime string = "19-12-2022 09:37:56 PM" formatting = "%d-%m-%Y %I:%M:%S %p" print(datetime.strptime(string, formatting))
Jika Anda menjalankan kode di atas, Anda akan melihat output berikut.
2022-12-19 21:37:56
Kami telah mengambil string datetime
dan mengubahnya menjadi objek datetime
menggunakan metode datetime.strptime
. Pastikan format yang Anda sediakan untuk metode ini sama persis dengan string datetime
. Jika tidak cocok, Anda mungkin mendapatkan kesalahan atau hasil yang salah.
Kami telah menggunakan beberapa kode pemformatan untuk format datetime
. Anda dapat merujuk ke semua kode format di dokumen.
Metode datetime.strptime
mengembalikan datetime
lengkap. Jika Anda ingin mendapatkan tanggal dan waktu secara terpisah, kita dapat menggunakan metode date time
dari objek datetime
. Mari kita lihat kodenya.
from datetime import datetime string = "19-12-2022 09:37:56 PM" formatting = "%d-%m-%Y %I:%M:%S %p" ## getting date separately print("Date:", datetime.strptime(string, formatting).date()) ## getting time separately print("Time:", datetime.strptime(string, formatting).time())
Jalankan kode di atas dan Anda akan melihat output berikut.
Date: 2022-12-19 Time: 21:37:56
date
dan time
metode akan mengembalikan objeknya masing-masing. Mereka akan kembali memiliki metode masing-masing untuk tanggal dan waktu.
Kami telah menyediakan string dan format yang benar untuk metode datetime.strptime
yang telah kami lihat di atas. Jika kami tidak menyediakannya dengan benar, maka kami akan mendapatkan kesalahan. Mari kita lihat cara menangani kesalahan tersebut. Jalankan kode berikut.

from datetime import datetime string = "19:12:2022 09:37:56 PM" formatting = "%d-%m-%Y %I:%M:%S %p" print(datetime.strptime(string, formatting))
Kode di atas akan menimbulkan kesalahan karena pemformatan tidak cocok dengan string datetime
. Untuk menangani error seperti ini, kita bisa menggunakan try-except dari Python. Mari kita tambahkan.
from datetime import datetime try: string = "19:12:2022 09:37:56 PM" formatting = "%d-%m-%Y %I:%M:%S %p" print(datetime.strptime(string, formatting)) except ValueError as error: print(error)
Sekarang, jalankan kode lagi. Anda akan melihat pesan kesalahan berikut tanpa memecahkan kode.
time data '19:12:2022 09:37:56 PM' does not match format '%d-%m-%Y %I:%M:%S %p'
Demikian pula, kita dapat menambahkan try-exception untuk metode parser.parse
yang akan datang juga. Ini membantu kita untuk menghindari pemecahan kode di tengah. Ini tidak secara khusus terkait dengan konteks tutorial ini, tetapi ini akan mengingatkan Anda untuk menggunakannya dalam kode Anda.
Itu saja untuk modul datetime
. Mari beralih ke modul dateutil
berikutnya.
Menggunakan dateutil
Modul dateutil
menyediakan ekstensi ke modul datetime
. Itu membuat bekerja dengan tanggal dan waktu jauh lebih mudah dengan banyak metode dengan penggunaan yang mudah. Mari instal modul dengan perintah berikut.
pip install python-dateutil
Metode yang kami minati adalah dateutil.parser.parse
. Mari kita lihat bagaimana mengonversi string datetime
ke objek datetime
.
parser.parse
Metode parser.parse
akan mengambil string datetime
dan mengubahnya menjadi format objek datetime
masing-masing. Kami tidak perlu menyediakan pemformatan apa pun untuk metode ini. Ini akan secara otomatis mengubah string datetime
yang diberikan menjadi objek datetime
. Mari kita lihat contohnya.
from dateutil import parser string = "19-12-2022 09:37:56 PM" print(parser.parse(string))
Jika Anda menjalankan kode di atas, Anda akan melihat output berikut.
2022-12-19 21:37:56
String datetime
harus dalam format tertentu yang diterima oleh metode parser.parse
. Ini akan menimbulkan kesalahan jika format string datetime
tidak sesuai format yang diinginkan. Anda dapat memeriksa semua format string datetime yang diterima untuk konversi otomatis.
Karena metode parser.parse
mengembalikan objek datetime
, kita dapat mengakses objek date
dan time
secara terpisah seperti yang telah kita lihat dengan modul datetime
. Mari kita lihat kodenya.
from dateutil import parser string = "19-12-2022 09:37:56 PM" print("Date:", parser.parse(string).date()) print("Time:", parser.parse(string).time())
Anda dapat melihat output di bawah ini jika Anda menjalankan kode di atas.
Date: 2022-12-19 Time: 21:37:56
Seperti yang Anda lihat dateutil
membuatnya lebih mudah untuk bekerja dengan tanggal dan waktu secara komparatif. Anda dapat menjelajahi modul di dokumen.
Kesimpulan
Kami telah menggunakan satu modul bawaan dan satu modul pihak ketiga untuk mengubah string datetime
menjadi objek DateTime. Ada modul bawaan lain yang disebut time
yang dengannya kita dapat mengonversi string datetime
menjadi objek DateTime yang mirip dengan modul datetime
dan dateutil
. Cobalah sendiri. Ini tidak akan sulit karena Anda telah melakukan hal serupa dengan modul lain.
Mungkin ada lebih banyak perpustakaan yang dapat digunakan untuk mencapai hal yang sama. Modul yang kami gunakan dalam tutorial benda standar dan banyak digunakan. Anda dapat mempelajari lebih lanjut tentang modul lain dan memilih yang terbaik yang cocok untuk Anda.
Anda juga dapat menjelajahi cara menghitung perbedaan waktu dengan python.
Selamat Coding