Time Zone Converter & Meeting Planner
A Java Swing desktop application designed to seamlessly convert time zones and find optimal cross-timezone meeting slots based on local work hours.
Overview
Coordinating meetings across multiple countries can be a logistical nightmare due to varying time zones and daylight saving rules. To solve this, I developed a desktop application using Java Swing that acts as both a precise time converter and a smart meeting planner. The app calculates overlapping working hours across multiple selected cities globally, storing configurations locally via CSV, making it an essential tool for distributed teams.
Key Features
- Smart Meeting Planner: Select multiple cities, specify meeting duration, and the algorithm will scan UTC timelines to find slots where all participants are within their local working hours.
- Accurate Time Conversion: Utilizes Java's robust
java.time.ZoneIdto convert dates and times instantly while automatically handling complex Daylight Saving Time (DST) rules. - Overnight Shift Support: The system intelligently handles work hours that span past midnight (e.g., 22:00 to 06:00), automatically adjusting the date boundaries for accurate calculation.
- Admin Configuration (CSV): Features a password-protected Admin UI
allowing users to dynamically add, edit, and persist city data and work hours into a
local
cities.csvfile. - Localized GUI: Customized the Swing
UIManagerand font rendering to fully support Thai language display seamlessly across the application.
Challenges & Solutions
Challenge: Calculating overlapping availability across different time zones is highly complex. The logic must account for date boundaries, varying offsets (like DST), and edge cases where a local work shift crosses into the next calendar day.
Solution: Instead of doing manual math with offsets, I fully leveraged the
modern java.time package (specifically ZonedDateTime and
Duration). I designed an algorithm that uses UTC as the central pivot. It steps
through time intervals, converts the UTC cursor back to each city's local time zone, and
checks it against their specific WorkHours object. By adding an intelligent
date-wrap check (adding +1 day if the end time is numerically before the start time), the
app flawlessly handles overnight shifts and cross-date meetings.