File dan Data · Pelajaran 6 dari 8

Tanggal dan waktu

9 menit baca · BelajarCode

Banyak pekerjaan administrasi berurusan dengan tanggal: jatuh tempo tagihan, masa garansi, keterlambatan pengembalian, atau jadwal rapat. Modul datetime menghitung semuanya dengan benar, termasuk tahun kabisat.

Python
1from datetime import date, timedelta23tanggal_nota = date(2026, 9, 15)4jatuh_tempo = tanggal_nota + timedelta(days=30)5print("Jatuh tempo:", jatuh_tempo)6print("Hari:", ["Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu", "Minggu"][jatuh_tempo.weekday()])78dibayar = date(2026, 10, 22)9terlambat = (dibayar - jatuh_tempo).days10print("Terlambat:", terlambat, "hari")11print("Denda:", max(0, terlambat) * 2000)
Keluaran
Jatuh tempo: 2026-10-15
Hari: Kamis
Terlambat: 7 hari
Denda: 14000
  • date(tahun, bulan, tanggal) membuat sebuah tanggal.
  • timedelta(days=30) adalah rentang waktu 30 hari. Tanggal ditambah timedelta menghasilkan tanggal baru.
  • Selisih dua tanggal adalah timedelta, dan .days memberi banyak harinya.
  • weekday() bernilai 0 untuk Senin sampai 6 untuk Minggu.

Membaca dan menulis format tanggal

Di Indonesia, tanggal biasa ditulis hari/bulan/tahun. Fungsi strptime membaca teks menjadi tanggal, dan strftime menulis tanggal dengan format tertentu.

Python
1from datetime import datetime23teks = "17/08/2026 09:30"4waktu = datetime.strptime(teks, "%d/%m/%Y %H:%M")5print(waktu.year, waktu.month, waktu.day, waktu.hour)6print(waktu.strftime("%Y-%m-%d"))78BULAN = ["Januari", "Februari", "Maret", "April", "Mei", "Juni", "Juli",9         "Agustus", "September", "Oktober", "November", "Desember"]10print(f"{waktu.day} {BULAN[waktu.month - 1]} {waktu.year}, pukul {waktu:%H.%M}")
Keluaran
2026 8 17 9
2026-08-17
17 Agustus 2026, pukul 09.30

Nama bulan ditulis sendiri dalam bahasa Indonesia, supaya hasilnya tidak bergantung pada pengaturan bahasa komputer.

Kode format tanggal yang sering dipakai
KodeArtinyaContoh
%dTanggal dua digit07
%mBulan dua digit09
%YTahun empat digit2026
%HJam 24 jam14
%MMenit05

Menghitung hari kerja

Python
1from datetime import date, timedelta23def tambah_hari_kerja(mulai, hari, libur=()):4    tanggal = mulai5    sisa = hari6    while sisa > 0:7        tanggal += timedelta(days=1)8        if tanggal.weekday() < 5 and tanggal not in libur:9            sisa -= 110    return tanggal1112libur_nasional = {date(2026, 8, 17)}13mulai = date(2026, 8, 13)14print("Selesai:", tambah_hari_kerja(mulai, 5, libur_nasional))
Keluaran
Selesai: 2026-08-21

Mulai Kamis 13 Agustus, lima hari kerja berikutnya adalah 14, 18, 19, 20, dan 21 Agustus. Sabtu, Minggu, dan 17 Agustus dilewati.

Daftar libur harus diperbarui

Tanggal libur nasional dan cuti bersama ditetapkan pemerintah setiap tahun dan bisa berubah. Simpan daftar libur di satu tempat, misalnya file CSV, dan perbarui setiap tahun, jangan ditulis tersebar di banyak bagian program.

Cek pemahaman

Apa hasil (date(2026, 3, 1) - date(2026, 2, 1)).days?

Latihan

Masa garansi

Sebuah toko memberi garansi 90 hari sejak tanggal pembelian. Buat fungsi yang menerima tanggal beli dan tanggal klaim dalam format hari/bulan/tahun, lalu menampilkan apakah klaim masih dalam masa garansi dan berapa hari tersisa atau terlewat.

Jalankan contoh kode di pelajaran ini tanpa instalasi lewat compiler Python online.

Tandai pelajaran ini selesai

Masuk ke aplikasi untuk mencatat kemajuan, lalu lanjutkan ke pelajaran berikutnya dari perangkat mana pun.

Buka di aplikasi