Lewati ke konten
🛠️ToolsShed

Kalkulator Durasi Waktu

Tambah atau kurangi jam, menit, dan detik untuk menghitung durasi waktu.

Tentang alat ini

Kalkulator Durasi Waktu menambah atau mengurangi jam, menit, dan detik untuk Anda, atau menghitung selisih antara waktu mulai dan waktu selesai. Alat ini membebaskan Anda dari hitungan di kepala yang rawan salah saat memindahkan detik ke menit dan menit ke jam ketika Anda hanya ingin total yang rapi.

Masukkan nilai waktu Anda dan pilih apakah ingin menjumlahkannya, mengurangi satu dari yang lain, atau mengukur rentang antara dua waktu jam, lalu hasilnya muncul seketika. Alat ini berguna untuk mengisi lembar absensi, memotong klip video dan audio, melacak tahapan memasak dan memanggang, mencatat babak latihan, serta menjumlahkan jam yang dapat ditagih.

Kalkulator ini menangani setiap pemindahan secara otomatis, mengubah 90 detik menjadi 1 menit 30 detik dan 75 menit menjadi 1 jam 15 menit tanpa kejutan pembulatan. Semuanya berjalan sepenuhnya di peramban Anda, sehingga angka Anda tetap di perangkat dan hasilnya langsung tersedia bahkan saat offline.

Pertanyaan yang Sering Diajukan

Implementasi Kode

import re

def parse_duration(s: str) -> int:
    """Parse a duration string like '1h 30m 45s' into total seconds."""
    pattern = r'(?:(d+)s*dw*)?s*(?:(d+)s*hw*)?s*(?:(d+)s*mw*)?s*(?:(d+)s*sw*)?'
    match = re.fullmatch(pattern.strip(), s.strip(), re.IGNORECASE)
    if not match or not any(match.groups()):
        raise ValueError(f"Cannot parse duration: {s!r}")
    d, h, m, sec = (int(x or 0) for x in match.groups())
    return d * 86400 + h * 3600 + m * 60 + sec

def format_duration(seconds: int) -> str:
    """Format total seconds back to a human-readable string."""
    seconds = abs(int(seconds))
    d = seconds // 86400
    h = (seconds % 86400) // 3600
    m = (seconds % 3600) // 60
    s = seconds % 60
    parts = []
    if d: parts.append(f"{d}d")
    if h: parts.append(f"{h}h")
    if m: parts.append(f"{m}m")
    if s or not parts: parts.append(f"{s}s")
    return " ".join(parts)

def add_durations(*durations: str) -> str:
    total = sum(parse_duration(d) for d in durations)
    return format_duration(total)

# Examples
print(parse_duration("1h 30m"))       # 5400
print(parse_duration("2d 4h 15m 0s")) # 187500
print(format_duration(5400))          # "1h 30m"
print(add_durations("1h 30m", "45m", "2h 15m"))  # "4h 30m"

Comments & Feedback

Comments are powered by Giscus. Sign in with GitHub to leave a comment.