Python Datetime: Bekerja dengan Tanggal dan Waktu

Pelajari cara menangani tanggal, waktu, zona waktu, dan penghitungan dengan Python. Kuasai pemformatan, penguraian, dan aritmatika menggunakan datetime dan timedelta.

Coba di Editor

Ikhtisar

Menangani tanggal dan waktu merupakan tantangan yang terkenal dalam pengembangan perangkat lunak, karena tahun kabisat, penyesuaian musim panas, dan format zona waktu yang berbeda. Python mengatasi tantangan ini dengan modul `datetime` bawaannya. Modul ini menyediakan serangkaian kelas objek yang kuat—seperti `date`, `time`, `datetime`, dan `timezone`—yang merepresentasikan dan memanipulasi data temporal dengan rapi, sehingga penghitungan tanggal menjadi mudah.

Salah satu tugas yang paling umum adalah mengubah tanggal menjadi string (pemformatan) dan string menjadi tanggal (parsing). Python menggunakan dua metode utama untuk ini: `.strftime()` (waktu format string) mengonversi objek datetime menjadi string yang dapat dibaca menggunakan kode pemformatan (seperti `%Y` untuk tahun, `%m` untuk bulan, dan `%d` untuk hari). Sebaliknya, `datetime.strptime()` (waktu penguraian string) mem-parsing input string mentah menjadi objek datetime berdasarkan templat format yang cocok, yang sangat penting saat membaca log atau input API.

Melakukan penghitungan tanggal juga didukung penuh menggunakan objek `timedelta`. `timedelta` mewakili durasi waktu (misalnya, 7 hari, 4 jam). Anda dapat menambahkan atau mengurangi `timedelta` dari `datetime` untuk menghitung tanggal yang lalu atau yang akan datang (seperti menentukan tanggal kedaluwarsa). Saat bekerja dengan beberapa zona waktu, penggunaan objek yang mengetahui zona waktu (seperti `zoneinfo` atau `timezone.utc`) sangat penting untuk memastikan perbandingan tanggal tetap akurat di berbagai lokasi server yang berbeda.

Kode & Output Eksekusi

Mengurai string menjadi objek datetime dan menghitung tenggat waktu di masa depan menggunakan timedelta.

datetime_demo.py
Coba di Editor
from datetime import datetime, timedelta

# Define a specific fixed base date and time (for deterministic runs)
base_date = datetime(2026, 5, 25, 23, 45, 50)
print(f"Base Date/Time: {base_date}")

# Format datetime as string
formatted = base_date.strftime("%Y-%m-%d %H:%M:%S")
print(f"Formatted String: {formatted}")

# Parse string to datetime
date_str = "2026-12-25"
parsed_date = datetime.strptime(date_str, "%Y-%m-%d")
print(f"Parsed Date: {parsed_date}")

# Date arithmetic with timedelta
ten_days_later = base_date + timedelta(days=10)
print(f"Date 10 days later: {ten_days_later.strftime('%Y-%m-%d')}")
Keluaran Terminal
Base Date/Time: 2026-05-25 23:45:50
Formatted String: 2026-05-25 23:45:50
Parsed Date: 2026-12-25 00:00:00
Date 10 days later: 2026-06-04

Implementasi Langkah demi Langkah

  • Menghitung masa berlaku uji coba dan tanggal penagihan
  • Mengurai string stempel waktu di dalam log akses server
  • Menjadwalkan tugas cron otomatis atau laporan berulang

Pertanyaan yang Sering Diajukan

Apa yang dimaksud dengan objek datetime yang naif vs. sadar?

Objek datetime yang naif tidak berisi informasi zona waktu, sedangkan objek datetime yang sadar menyertakan offset zona waktu, sehingga aman untuk penghitungan waktu internasional.

Bagaimana cara menghitung selisih antara dua tanggal?

Mengurangi satu objek datetime dari objek lain akan menghasilkan objek timedelta yang mewakili durasi tepat di antara objek tersebut.

Topik Terkait

Sumber Daya Python yang Direkomendasikan

Perluas pengetahuan Anda dengan tutorial interaktif terkait, lembar contekan, dan perbandingan kode.