import streamlit as st import time import pytz from datetime import datetime, timedelta # Helper Functions def get_timezones(): return ['UTC', 'US/Eastern', 'Europe/London', 'Asia/Kolkata', 'Asia/Tokyo', 'Australia/Sydney'] def format_time(seconds): mins, secs = divmod(seconds, 60) hours, mins = divmod(mins, 60) return f"{int(hours):02d}:{int(mins):02d}:{int(secs):02d}" # Streamlit App st.set_page_config(page_title="Clock App", page_icon="🕰️", layout="centered") st.title("🕰️ Clock Application") menu = st.sidebar.radio("Select Function", ("World Clock", "Alarm Clock", "Stopwatch", "Timer")) # --- World Clock --- # if menu == "World Clock": st.header("🌎 World Clock") selected_timezones = st.multiselect("Choose timezones", get_timezones(), default=['UTC']) placeholder = st.empty() while True: with placeholder.container(): for tz in selected_timezones: timezone = pytz.timezone(tz) time_now = datetime.now(timezone).strftime("%Y-%m-%d %H:%M:%S") st.write(f"**{tz}**: {time_now}") time.sleep(1) placeholder.empty() # --- Alarm Clock --- # elif menu == "Alarm Clock": st.header("⏰ Alarm Clock") alarm_time = st.time_input("Set Alarm Time") alarm_set = st.button("Set Alarm") if alarm_set: st.success(f"Alarm is set for {alarm_time}!") while True: now = datetime.now().time() if (now.hour, now.minute) == (alarm_time.hour, alarm_time.minute): st.balloons() st.success("⏰ It's Time!") break time.sleep(20) # --- Stopwatch --- # elif menu == "Stopwatch": st.header("⏱️ Stopwatch") if "stopwatch_running" not in st.session_state: st.session_state.stopwatch_running = False st.session_state.start_time = None st.session_state.elapsed = 0 col1, col2, col3 = st.columns(3) with col1: if st.button("Start"): if not st.session_state.stopwatch_running: st.session_state.start_time = time.time() - st.session_state.elapsed st.session_state.stopwatch_running = True with col2: if st.button("Pause"): if st.session_state.stopwatch_running: st.session_state.elapsed = time.time() - st.session_state.start_time st.session_state.stopwatch_running = False with col3: if st.button("Reset"): st.session_state.start_time = None st.session_state.elapsed = 0 st.session_state.stopwatch_running = False st.subheader("Elapsed Time") placeholder = st.empty() while st.session_state.stopwatch_running: elapsed = time.time() - st.session_state.start_time placeholder.subheader(format_time(elapsed)) time.sleep(0.1) else: placeholder.subheader(format_time(st.session_state.elapsed)) # --- Timer --- # elif menu == "Timer": st.header("⏲️ Timer") minutes = st.number_input("Set Timer (minutes)", min_value=0, max_value=120, value=1) start_timer = st.button("Start Timer") if start_timer: total_seconds = minutes * 60 placeholder = st.empty() for remaining in range(total_seconds, -1, -1): placeholder.subheader(format_time(remaining)) time.sleep(1) st.balloons() st.success("⏳ Time's up!")