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 | |