Menguasai Modul Datetime pada Python
Modul datetime
merupakan salah satu pustaka standar python yang berguna untuk mengelola data tanggal dan waktu. Di dalamnya tersedia kelas-kelas untuk merepresentasikan dan mengelola informasi waktu. Selain itu terdapat pula kelas yang memungkinkan kita untuk mengonversi, membandingkan, dan menghitung perbedaan antara tanggal dan waktu.
Berikut ini adalah beberapa kelas dan metode penting yang tersedia pada modul datetime
:
- kelas
date
: merepresentasikan tanggal (tahun, bulan dan hari) tanpa informasi waktu - kelas
time
: merepresentasikan waktu dalam sehari tanpa informasi tanggal - kelas
datetime
: merepresentasikan tanggal dan waktu bersamaan - kelas
timedelta
: merepresentasikan selisih waktu atau durasi - metode
strftime()
: digunakan untuk mengonversi objek datetime menjadi string sesuai dengan format yang diberikan - metode
strptime()
: digunakan untuk mengonversi string yang berisi tanggal dan waktu ke objek datetime dengan format tertentu - kelas
tzinfo
: kelas abstrak yang digunakan untuk merepresentasikan informasi zona waktu - kelas
timezone
: digunakan untuk merepresentasikan zona waktu dengan offset tetap, seperti “UTC+2” atau “UTC-5”
Mari kita bahas satu per satu kelas dan metode tersebut!
date
Kelas date
digunakan untuk merepresentasikan tanggal (tahun, bulan dan hari) tanpa informasi waktu. Objek dari kelas date
dapat dibuat dengan menentukan parameter year
, month
dan day
. Secara default semua parameter tersebut memiliki nilai 0.
Metode dan atribut yang terdapat pada kelas date
adalah sebagai berikut:
Python
import datetime print("Membuat objek date:") # membuat objek date dengan parameter year, month, dan day my_date = datetime.date(2023, 10, 1) print(f"- Tanggal yang dibuat: {my_date}") # menggunakan date.today() untuk mendapatkan tanggal saat ini today_date = datetime.date.today() print(f"- Tanggal hari ini: {today_date}") # membuat objek date dari string dalam format ISO date_string = "2023-12-31" iso_date = datetime.date.fromisoformat(date_string) print(f"- Tanggal dari string ISO: {iso_date}\n") # membandingkan 2 objek date print("Perbandingan 2 objek date:") print(f"- {my_date} < {today_date} -> {my_date < today_date}\n") # mengakses atribut tanggal, bulan, dan tahun dari objek date day = today_date.day month = today_date.month year = today_date.year print("Atribut dari objek today_date:") print(f"- Hari ini adalah tanggal {day} bulan {month} tahun {year}")
# OUTPUT Membuat objek date: - Tanggal yang dibuat: 2023-10-01 - Tanggal hari ini: 2023-10-09 - Tanggal dari string ISO: 2023-12-31 Perbandingan 2 objek date: - 2023-10-01 < 2023-10-09 -> True Atribut dari objek today_date: - Hari ini adalah tanggal 9 bulan 10 tahun 2023
time
Kelas time
digunakan untuk merepresentasikan waktu dalam sehari tanpa informasi tanggal. Untuk membuat objek time
kita dapat menentukan nilai parameter hour
, minute
, second
hingga microsecond
. Semua parameter tersebut memiliki nilai default 0.
Metode dan atribut yang terdapat pada kelas time
adalah sebagai berikut:
Python
import datetime # membuat objek time # parameter: hour, minute, dan second my_time = datetime.time(13, 30, 45) print(f"Waktu yang dibuat: {my_time}\n") # membandingkan 2 objek time your_time = datetime.time(15, 30) # second = 0 print(f"{my_time} > {your_time} -> {my_time > your_time}\n") # Mengakses atribut jam, menit, dan detik hour = my_time.hour minute = my_time.minute second = my_time.second print("Atribut dari objek current_time:") print(f"- Saat ini jam {hour} lewat {minute} menit {second} detik")
# OUTPUT Waktu yang dibuat: 13:30:45 13:30:45 > 15:30:00 -> False Atribut dari objek current_time: - Saat ini jam 13 lewat 30 menit 45 detik
datetime
Kelas datetime
digunakan untuk membuat data dalam bentuk tanggal dan waktu sekaligus. Kelas ini memungkinkan kita untuk membuat, memanipulasi, dan memformat objek tanggal dan waktu dengan mudah. Adapun parameter yang dapat ditentukan sama seperti kombinasi antara kelas date
dan kelas time
.
Metode dan atribut yang terdapat pada kelas datetime
adalah sebagai berikut:
Python
import datetime # Membuat dua objek datetime # year, month, day, hour, minute, second my_datetime = datetime.datetime(2023, 10, 1, 15, 30, 0) print(f"my_datetime: {my_datetime}\n") # Mendapatkan waktu saat ini current_datetime = datetime.datetime.now() print(f"Waktu saat ini: {current_datetime}\n") # Membandingkan dua objek datetime print(f"{my_datetime} > {current_datetime} -> {my_datetime > current_datetime}\n") # Mengakses atribut-atribut dari objek datetime year = current_datetime.year month = current_datetime.month day = current_datetime.day hour = current_datetime.hour minute = current_datetime.minute second = current_datetime.second print("Atribut dari objek current_datetime:") print(f"- Saat ini jam {hour} lewat {minute} menit {second} detik") print(f"- Tanggal {day} bulan {month} tahun {year}\n") # Mengakses (date) dari objek datetime date_only = current_datetime.date() print("- date:", date_only) # Mengakses (time) dari objek datetime time_only = current_datetime.time() print("- time:", time_only)
# OUTPUT my_datetime: 2023-10-01 15:30:00 Waktu saat ini: 2023-10-09 07:55:28.100816 2023-10-01 15:30:00 > 2023-10-09 07:55:28.100816 -> False Atribut dari objek current_datetime: - Saat ini jam 7 lewat 55 menit 28 detik - Tanggal 9 bulan 10 tahun 2023 - date: 2023-10-09 - time: 07:55:28.100816
timedelta
Kelas timedelta
digunakan untuk merepresentasikan jangka waktu atau selisih antara dua titik waktu. Ini memungkinkan kita untuk melakukan perhitungan terkait waktu, seperti penambahan atau pengurangan objek datetime
dengan timedelta
.
Metode dan atribut yang terdapat pada kelas timedelta
adalah sebagai berikut:
Python
import datetime # Membuat objek timedelta # parameter: days, hours, minutes, ... time_period = datetime.timedelta(days=15, hours=12, minutes=0) print(f">>> Periode waktu tugas: {time_period}\n") # menghitung end_time berdasarkan start_time + time_period start_time = datetime.datetime(2023, 10, 1) end_time = start_time + time_period print(f">>> start: {start_time}, end: {end_time}\n") # mengurangi 2 datetime untuk menghitung timedelta done_time = datetime.datetime(2023, 10, 25, 13, 45, 25) exceeded_duration = done_time - end_time print(f">>> Tugas selesai pada {done_time}") print(f">>> Melewati batas waktu selama {exceeded_duration}\n") # Mengakses atribut-atribut dari objek timedelta days = exceeded_duration.days seconds = exceeded_duration.seconds % 60 minutes = (exceeded_duration.seconds // 60) % 60 hours = (exceeded_duration.seconds // 3600) % 24 print("Attributes objek timedelta:") print(">>> Days:", days) print(">>> Hours:", hours) print(">>> Minutes:", minutes) print(">>> Seconds:", seconds)
# OUTPUT Periode waktu tugas: 15 days, 12:00:00 start: 2023-10-01 00:00:00, end: 2023-10-16 12:00:00 Tugas selesai pada 2023-10-25 13:45:00 Melewati batas waktu selama 9 days, 1:45:00 Attributes objek timedelta: - Days: 9 - Hours: 1 - Minutes: 45 - Seconds: 0
strftime()
Metode strftime
digunakan untuk mengubah tanggal dan waktu dalam bentuk objek datetime
menjadi string dengan tampilan yang dapat disesuaikan dengan kebutuhan kita.
Format-format yang digunakan selengkapnya dapat dilihat di sini.
Python
import datetime import locale date_obj = datetime.date(2023, 10, 1) # full date format: full_date = date_obj.strftime("%A, %B %d, %Y") print(f"Full date : {full_date}") # Short Date Format: short_date = date_obj.strftime("%d/%m/%y") print(f"Short date : {short_date}") # Abbreviated Month Format: abv_date = date_obj.strftime("%b %d, %Y") print(f"Abbrevieted date : {abv_date}") # Set the locale to Indonesian locale.setlocale(locale.LC_TIME, 'id_ID') idn_date = date_obj.strftime("%A, %d %B %Y") print(f"Locale Indonesia : {idn_date}") # 24-Hour Time Format: datetime_obj = datetime.datetime(2023, 10, 1, 16, 45, 0) f24_time = datetime_obj.strftime("%H:%M:%S") print(f"24-Hour Format : {f24_time}") # 12-Hour Time Format with AM/PM: f12_time = datetime_obj.strftime("%I:%M:%S %p") print(f"12-Hour Format : {f12_time}") # custom fmt_datetime = datetime_obj.strftime("%a %d-%b-%Y %H:%M:%S") print(f"Other : {fmt_datetime}")
# OUTPUT Full date : Sunday, October 01, 2023 Short date : 01/10/23 Abbrevieted date : Oct 01, 2023 Locale Indonesia : Minggu, 01 Oktober 2023 24-Hour Format : 16:45:00 12-Hour Format : 04:45:00 PM Other : Min 01-Okt-2023 16:45:00
strptime()
strptime()
digunakan untuk dan membuat objek datetime
dengan mengambil informasi tanggal dan waktu dari string berdasarkan format yang telah ditentukan.
Format-format yang digunakan selengkapnya dapat dilihat di sini.
Python
import datetime import locale # Full date format (dd/mm/YYYY) date_str = "07/10/2023" date_obj = datetime.datetime.strptime(date_str, "%d/%m/%Y") print(date_obj) # Set the locale to Bahasa Indonesia locale.setlocale(locale.LC_TIME, 'id_ID') # Date Format with Day in Indonesian Language: date_str = "Sabtu, 07 Oktober 2023" date_obj = datetime.datetime.strptime(date_str, "%A, %d %B %Y") print(date_obj) # Standard Time Format (HH:MM:SS): time_str = "2023/10/07, 14:30:00" time_obj = datetime.datetime.strptime(time_str, "%Y/%m/%d, %H:%M:%S") print(time_obj) # Time Format with AM/PM (hh:mm AM/PM): time_str = "2023/10/07, 02:30 PM" time_obj = datetime.datetime.strptime(time_str, "%Y/%m/%d, %I:%M %p") print(time_obj)
# OUTPUT 2023-10-07 00:00:00 2023-10-07 00:00:00 2023-10-07 14:30:00 2023-10-07 14:30:00
tzinfo
Kelas tzinfo
merupakan kelas abstrak yang digunakan untuk merepresentasikan data tanggal dan waktu dengan informasi zona waktu. Karena merupakan kelas abstrak, maka kira perlu membuat kelas turunannya dan mengimplementasikan metode utfoffset
.
Berikut ini contoh penggunaan tzinfo
pada objek datetime
:
Python
from datetime import datetime, timedelta, tzinfo class IdnTimeZone(tzinfo): def utcoffset(self, dt): # Setting the time offset to UTC+07:00 return timedelta(hours=7) # Creating a datetime object with the custom timezone custom_time = datetime(2023, 10, 1, 8, 30, tzinfo=IdnTimeZone()) # Displaying the time with the custom timezone print(custom_time)
# OUTPUT 2023-10-01 08:30:00+07:00
timezone
Kelas timezone
merupakan subkelas dari kelas abstrak tzinfo
dan dapat digunakan mirip seperti contoh sebelumnya saat kita membuat subkelas sendiri.
Berikut ini contoh penggunaan tzinfo
pada objek datetime
:
Python
from datetime import datetime, timezone, timedelta # creating a datetime object with UTC timezone utc_time = datetime(2023, 10, 1, tzinfo=timezone.utc) # displaying the time in UTC print("UTC Time:", utc_time) # creating a fixed timezone for UTC+07:00 idn_timezone = timezone(timedelta(hours=7)) # creating a datetime object with the custom timezone (UTC+07:00) idn_time = datetime(2023, 10, 1, tzinfo=idn_timezone) # displaying the time with the idn timezone print("Custom Time:", idn_time)
# OUTPUT UTC Time: 2023-10-01 00:00:00+00:00 Indonesia Time: 2023-10-01 00:00:00+07:00
Tulisan Lainnya
Dasar-Dasar Pemrograman dengan Python