Bekerja dengan Date dan Time di Python

Post image

Bekerja dengan tanggal dan waktu (date & time) adalah salah satu kebutuhan paling umum dalam pemrograman Python, baik untuk mencatat waktu transaksi, membuat laporan, atau sekadar menampilkan waktu saat ini. Namun, banyak pemula yang masih bingung bagaimana cara mengelola tanggal dan waktu dengan benar di Python.

Pada artikel ini, kamu akan belajar konsep dasar date & time di Python, cara membuat, memformat, dan memanipulasi tanggal/waktu, serta tips best practice agar kode kamu lebih rapi dan mudah dipahami.

Mengapa Perlu Belajar Date & Time di Python?

  • Mencatat waktu kejadian (logging, transaksi, event)
  • Membuat laporan periodik (harian, bulanan, tahunan)
  • Menghitung selisih waktu (durasi, deadline, reminder)
  • Konversi format tanggal/waktu (untuk user, database, API)
  • Timezone-aware (aplikasi global)

Tanpa pemahaman yang baik, kamu bisa salah hitung waktu, salah format, atau bahkan error saat memproses data tanggal.

Modul Date & Time di Python

Python menyediakan beberapa modul untuk mengelola tanggal dan waktu, yang paling sering digunakan adalah:

  • datetime: Modul utama untuk date & time (paling lengkap)
  • time: Untuk operasi waktu tingkat rendah (jarang dipakai langsung)
  • calendar: Untuk operasi kalender (misal, cek hari libur)
  • dateutil dan pytz: Library pihak ketiga untuk timezone dan parsing lanjutan

Pada artikel ini, kita fokus pada datetime karena paling sering digunakan dan sudah built-in di Python.

Dasar-dasar datetime di Python

1. Mendapatkan Tanggal dan Waktu Saat Ini

Untuk mendapatkan waktu saat ini, gunakan datetime.now():

from datetime import datetime

waktu_sekarang = datetime.now()
print(waktu_sekarang)
2025-04-18 18:45:12.345678

Penjelasan:

  • datetime.now() mengembalikan objek datetime berisi tanggal dan waktu saat ini (sesuai waktu lokal komputer).
  • Output default: YYYY-MM-DD HH:MM:SS.microsecond

2. Membuat Objek Date dan Time

Kamu bisa membuat objek tanggal (date) atau waktu (time) saja:

from datetime import date, time

tanggal = date(2025, 4, 18)  # tahun, bulan, hari
waktu = time(14, 30, 0)     # jam, menit, detik

print(tanggal)
print(waktu)
2025-04-18
14:30:00

Penjelasan:

  • date(YYYY, MM, DD) untuk tanggal saja.
  • time(HH, MM, SS) untuk waktu saja.

3. Mengakses Komponen Tanggal/Waktu

Objek datetime punya atribut yang bisa diakses langsung:

from datetime import datetime

now = datetime.now()
print("Tahun:", now.year)
print("Bulan:", now.month)
print("Hari:", now.day)
print("Jam:", now.hour)
print("Menit:", now.minute)
print("Detik:", now.second)
Tahun: 2025
Bulan: 4
Hari: 18
Jam: 18
Menit: 45
Detik: 12

4. Memformat Tanggal dan Waktu (strftime)

Agar tanggal/waktu mudah dibaca atau sesuai kebutuhan user, gunakan strftime() untuk mengubah format:

from datetime import datetime

now = datetime.now()
print(now.strftime("%d-%m-%Y %H:%M:%S"))  # format: DD-MM-YYYY HH:MM:SS
print(now.strftime("%A, %d %B %Y"))       # format: Hari, DD NamaBulan YYYY
18-04-2025 18:45:12
Friday, 18 April 2025

Penjelasan:

  • %d = hari, %m = bulan, %Y = tahun, %H = jam (24), %M = menit, %S = detik
  • %A = nama hari, %B = nama bulan

Tips:
Gunakan strftime untuk menyesuaikan tampilan tanggal/waktu sesuai kebutuhan aplikasi atau user.

5. Parsing String ke Tanggal (strptime)

Jika kamu punya data tanggal dalam bentuk string (misal dari input user atau file), gunakan strptime() untuk mengubahnya ke objek datetime:

from datetime import datetime

tanggal_str = "18-04-2025 14:30:00"
dt = datetime.strptime(tanggal_str, "%d-%m-%Y %H:%M:%S")
print(dt)
2025-04-18 14:30:00

Penjelasan:

  • Format string harus sesuai dengan format yang diberikan di strptime.

6. Menghitung Selisih Tanggal/Waktu (timedelta)

Untuk menghitung durasi atau selisih antara dua tanggal/waktu, gunakan timedelta:

from datetime import datetime

mulai = datetime(2025, 4, 10)
selesai = datetime(2025, 4, 18)
selisih = selesai - mulai
print(f"Selisih hari: {selisih.days}")
Selisih hari: 8

Kamu juga bisa menambah/mengurangi waktu:

from datetime import datetime, timedelta

now = datetime.now()
besok = now + timedelta(days=1)
kemarin = now - timedelta(days=1)
print("Besok:", besok)
print("Kemarin:", kemarin)
Besok: 2025-04-19 18:45:12.345678
Kemarin: 2025-04-17 18:45:12.345678

7. Menangani Timezone

Secara default, datetime di Python tidak menyimpan informasi zona waktu (naive). Untuk aplikasi global, gunakan modul pytz atau zoneinfo (Python 3.9+):

from datetime import datetime
import pytz

zona_jakarta = pytz.timezone("Asia/Jakarta")
now = datetime.now(zona_jakarta)
print(now)
2025-04-18 18:45:12.345678+07:00

Tips:
Jika aplikasi kamu butuh waktu global (misal, server, API), selalu gunakan UTC atau timezone-aware datetime.

Studi Kasus: Membuat Reminder Sederhana

Misal kamu ingin membuat program yang menghitung berapa hari lagi menuju deadline:

from datetime import datetime

deadline_str = input("Masukkan deadline (DD-MM-YYYY): ")
deadline = datetime.strptime(deadline_str, "%d-%m-%Y")
hari_ini = datetime.now()
selisih = deadline - hari_ini

if selisih.days > 0:
    print(f"Sisa waktu: {selisih.days} hari lagi.")
elif selisih.days == 0:
    print("Hari ini adalah deadline!")
else:
    print("Deadline sudah lewat.")

Penjelasan:

  • User memasukkan deadline dalam format DD-MM-YYYY.
  • Program menghitung selisih hari dari hari ini ke deadline.

Best Practice dan Tips Date & Time di Python

No Tips Penjelasan
1 Gunakan modul datetime untuk semua kebutuhan date & time Lebih lengkap dan mudah dibanding time
2 Selalu gunakan format ISO (YYYY-MM-DD) untuk penyimpanan Standar internasional, mudah diproses
3 Gunakan strftime dan strptime untuk konversi format Agar fleksibel sesuai kebutuhan user
4 Untuk aplikasi global, gunakan timezone-aware datetime Hindari error perbedaan zona waktu
5 Jangan simpan datetime sebagai string di database Simpan sebagai tipe datetime, konversi saat tampilkan
6 Gunakan library pihak ketiga (dateutil, pytz) untuk kebutuhan lanjutan Parsing natural language, timezone kompleks

Penjelasan tambahan:
Kesalahan umum pemula adalah mengelola tanggal sebagai string, atau lupa menangani timezone. Biasakan selalu gunakan objek datetime dan konversi hanya saat input/output.

FAQ Seputar Date & Time di Python

Q: Bagaimana cara mendapatkan timestamp (epoch time) di Python?
A: Gunakan datetime.timestamp() untuk mendapatkan detik sejak 1 Januari 1970 (Unix epoch):

from datetime import datetime
now = datetime.now()
print(now.timestamp())

Q: Bagaimana cara mengubah timestamp ke datetime?
A: Gunakan datetime.fromtimestamp():

from datetime import datetime
dt = datetime.fromtimestamp(1713446400)
print(dt)

Q: Bagaimana cara mendapatkan nama hari dari tanggal tertentu?
A: Gunakan strftime("%A"):

from datetime import datetime
dt = datetime(2025, 4, 18)
print(dt.strftime("%A"))  # Output: Friday

Q: Bagaimana cara menambah bulan ke tanggal?
A: Gunakan library dateutil.relativedelta:

from datetime import datetime
from dateutil.relativedelta import relativedelta

dt = datetime(2025, 4, 18)
dt_bulan_depan = dt + relativedelta(months=1)
print(dt_bulan_depan)

Kesimpulan

Mengelola tanggal dan waktu adalah skill wajib untuk setiap programmer Python. Dengan memahami konsep dasar, cara membuat, memformat, dan memanipulasi date & time, kamu bisa membuat aplikasi yang lebih profesional dan bebas error waktu. Selalu gunakan modul datetime, biasakan konversi format hanya saat input/output, dan jangan lupa perhatikan timezone jika aplikasi kamu digunakan secara global.

Selamat mencoba dan happy coding!

comments powered by Disqus

You May Also Like

Manipulasi File dan I/O di Python

Manipulasi File dan I/O di Python

Manipulasi file dan operasi I/O (Input/Output) adalah salah satu kemampuan penting yang harus dikuasai oleh setiap programmer Python, baik untuk membaca data dari file, menulis hasil ke file, atau memproses data eksternal.