Cara Mengonversi String ke Datetime dengan Python

Diterbitkan: 2022-12-20

Mengubah 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