Learn
← Previous Next →

Hari 23: datetime & os — Waktu dan Sistem File

60 min Last updated 26 Mar 2026

Module datetime

from datetime import datetime, date, time, timedelta

# Tanggal & waktu sekarang
sekarang = datetime.now()
hari_ini = date.today()
print(sekarang)           # 2026-03-25 14:30:00.123456
print(hari_ini)           # 2026-03-25

# Buat objek datetime
ulang_tahun = date(1995, 8, 17)
meeting     = datetime(2026, 4, 1, 9, 30, 0)

# Format tanggal — strftime
print(sekarang.strftime("%d %B %Y"))         # 25 March 2026
print(sekarang.strftime("%Y-%m-%d %H:%M"))   # 2026-03-25 14:30
print(sekarang.strftime("%A, %d %B %Y"))     # Wednesday, 25 March 2026

# Parse string ke datetime — strptime
tgl_str = "25/03/2026"
tgl_obj = datetime.strptime(tgl_str, "%d/%m/%Y")
print(type(tgl_obj))   # datetime

timedelta — Selisih Waktu

from datetime import date, timedelta

hari_ini   = date.today()
minggu_depan = hari_ini + timedelta(weeks=1)
kemarin      = hari_ini - timedelta(days=1)

# Hitung umur
lahir = date(1995, 8, 17)
umur_hari = (date.today() - lahir).days
umur_tahun = umur_hari // 365
print(f"Umur: {umur_tahun} tahun ({umur_hari} hari)")

# Deadline countdown
deadline = date(2026, 12, 31)
sisa = (deadline - date.today()).days
print(f"Deadline dalam {sisa} hari")

Module os — Interaksi dengan Sistem Operasi

import os

# Informasi direktori
print(os.getcwd())                    # direktori saat ini
print(os.listdir("."))               # isi direktori
print(os.path.exists("data.txt"))    # cek keberadaan file

# Path manipulation
path = os.path.join("folder", "subfolder", "file.txt")
print(path)                           # folder/subfolder/file.txt
print(os.path.basename(path))         # file.txt
print(os.path.dirname(path))          # folder/subfolder
nama, ext = os.path.splitext("file.txt")  # ("file", ".txt")

# Operasi file & folder
os.makedirs("output/data", exist_ok=True)   # buat folder rekursif
# os.rename("lama.txt", "baru.txt")
# os.remove("file.txt")
# os.rmdir("folder_kosong")

# Environment variables
home = os.environ.get("HOME", "tidak ditemukan")
print(f"HOME: {home}")

pathlib — Cara Modern (Python 3.4+)

from pathlib import Path

p = Path(".")
print(list(p.iterdir()))          # isi direktori sebagai Path objects

file = Path("data") / "output.txt"   # operator / untuk join path
print(file.parent)                # data
print(file.name)                  # output.txt
print(file.suffix)                # .txt
print(file.stem)                  # output

file.parent.mkdir(exist_ok=True)
file.write_text("Halo dari pathlib!\n")
print(file.read_text())

Assignment

Buat program log aktivitas harian. Setiap aktivitas disimpan ke file log dengan timestamp. Program bisa: (1) tambah aktivitas, (2) baca log hari ini, (3) hitung total aktivitas per hari.

Expected output:

Dicatat: [2026-03-25 ...] Mulai belajar Python
Dicatat: [2026-03-25 ...] Selesai Hari 23
Dicatat: [2026-03-25 ...] Review materi datetime
Log hari ini:
[2026-03-25 ...] Mulai belajar Python
...
Statistik:
2026-03-25: 3 aktivitas
PY main.py
Solution
Output