Python:
import time
class Timer:
"""
A simple timer class for tracking elapsed time.
Supports start, pause, resume, reset, and formatted output.
"""
def __init__(self):
"""Initialize a new timer. Not started by default."""
self._start_time = None
self._paused_elapsed = 0.0
self._is_paused = False
self._is_running = False
def start_timer(self):
"""
Start the timer from zero.
If already running, this restarts from zero.
"""
self._start_time = time.perf_counter()
self._paused_elapsed = 0.0
self._is_paused = False
self._is_running = True
def pause_timer(self):
"""Pause the timer. Does nothing if timer isn't running or already paused."""
if self._is_running and not self._is_paused:
self._paused_elapsed += time.perf_counter() - self._start_time
self._is_paused = True
def resume_timer(self):
"""Resume a paused timer. Does nothing if timer isn't paused."""
if self._is_running and self._is_paused:
self._start_time = time.perf_counter()
self._is_paused = False
def reset_timer(self):
"""Reset the timer to zero and stop it."""
self._is_running = False
self._is_paused = False
self._paused_elapsed = 0.0
self._start_time = None
def get_time_elapsed(self):
"""
Get formatted elapsed time as string.
Returns format like "x hours y minutes z seconds".
Omits hours if zero, omits minutes if zero.
"""
if not self._is_running:
return "0 seconds"
# Calculate total seconds elapsed
if self._is_paused:
total_seconds = self._paused_elapsed
else:
total_seconds = self._paused_elapsed + (time.perf_counter() - self._start_time)
# Extract time components
hours = int(total_seconds // 3600)
minutes = int((total_seconds % 3600) // 60)
seconds = int(total_seconds % 60)
# Build the output string, omitting zero values
parts = []
if hours > 0:
parts.append(f"{hours} hour{'s' if hours != 1 else ''}")
if minutes > 0:
parts.append(f"{minutes} minute{'s' if minutes != 1 else ''}")
if seconds > 0 or not parts:
parts.append(f"{seconds} second{'s' if seconds != 1 else ''}")
return " ".join(parts)
test:
Python:
timer = Timer()
# Start and run for 2 seconds
timer.start_timer()
time.sleep(2)
print(timer.get_time_elapsed()) # "2 seconds"
# Pause for 3 seconds
timer.pause_timer()
time.sleep(3)
print(timer.get_time_elapsed()) # Still "2 seconds"
# Resume and run for 5 more seconds
timer.resume_timer()
time.sleep(5)
print(timer.get_time_elapsed()) # "7 seconds"
# Reset and start fresh
timer.reset_timer()
timer.start_timer()
time.sleep(3661)
print(timer.get_time_elapsed()) # "1 hour 1 minute 1 second"