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