Spaces:
Sleeping
Sleeping
# app.py | |
# ============= | |
# This is a complete app.py file for a countdown timer to New Year 2025 in multiple time zones. | |
import gradio as gr | |
from datetime import datetime, timedelta | |
import pytz | |
# Define a function to calculate the time remaining until New Year 2025 in the specified time zone | |
def countdown_to_new_year(timezone: str): | |
try: | |
# Get the current time in the specified time zone | |
tz = pytz.timezone(timezone) | |
now = datetime.now(tz) | |
# Define the target date and time for New Year 2025 | |
new_year_2025 = tz.localize(datetime(2025, 1, 1, 0, 0, 0)) | |
# Check if New Year has already passed | |
if now >= new_year_2025: | |
return f"Happy New Year 2025!\nCurrent time in {timezone}: {now.strftime('%Y-%m-%d %H:%M:%S')}" | |
# Calculate the time remaining | |
time_remaining = new_year_2025 - now | |
# Extract days, hours, minutes, and seconds | |
days = time_remaining.days | |
seconds = time_remaining.seconds | |
hours = seconds // 3600 | |
minutes = (seconds % 3600) // 60 | |
seconds = seconds % 60 | |
return ( | |
f"{days} days, {hours} hours, {minutes} minutes, {seconds} seconds remaining\n" | |
f"Current time in {timezone}: {now.strftime('%Y-%m-%d %H:%M:%S')}" | |
) | |
except Exception as e: | |
return f"Error: {str(e)}" | |
# Create a list of common time zones for the user to choose from | |
TIME_ZONES = pytz.all_timezones | |
# Define the Gradio interface | |
def build_interface(): | |
with gr.Blocks() as app: | |
gr.Markdown(""" | |
# Countdown to New Year 2025 | |
Select a time zone to see how much time remains until New Year 2025! | |
""") | |
timezone_selector = gr.Dropdown( | |
label="Select Time Zone", | |
choices=TIME_ZONES, | |
value="UTC" | |
) | |
countdown_display = gr.Textbox(label="Countdown and Current Time", interactive=False) | |
calculate_button = gr.Button("Calculate Countdown") | |
calculate_button.click( | |
fn=countdown_to_new_year, | |
inputs=[timezone_selector], | |
outputs=[countdown_display] | |
) | |
return app | |
# Build and launch the app | |
if __name__ == "__main__": | |
app = build_interface() | |
app.launch() | |
# Dependencies | |
# ============= | |
# The following dependencies are required to run this app: | |
# - gradio | |
# - pytz | |
# | |
# You can install these dependencies using pip: | |
# pip install gradio pytz | |