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





