A modern desktop application built with Java Swing for managing events and performing various date/time calculations.
The Date-Time Utility Library is a comprehensive desktop application that combines time calculation utilities (like age calculation and time format conversions) with a robust event scheduler. It features a modern, clean UI with sidebar navigation, theme support, and a background daemon for real-time event reminders.

(Note: Ensure docs/images/preview.gif is present to display the preview).
- Event Scheduler
- Add, edit, and delete events.
- Search and filter events by title, description, location, or date.
- Priority levels for events (Low, Medium, High).
- Background Reminders
- Configurable push notifications (
JOptionPane) via a background daemon thread. - Reminder offsets: At time of event, 15 min, 30 min, 1 hour, or 1 day before.
- Configurable push notifications (
- Time Utilities
- View current time in customizable formats.
- Calculate time differences between two times.
- Convert between 12-hour (AM/PM) and 24-hour formats.
- Add or subtract minutes from a given time.
- Age Calculator
- Calculate exact age based on Date of Birth (Years, Months, Days).
- Detailed age statistics (total weeks, days, hours, minutes, seconds).
- Countdown to the next birthday.
- Data Persistence
- Saves all events locally to a flat-file (
events_data.txt), requiring no database setup.
- Saves all events locally to a flat-file (
- Modern User Interface
- Swing-based UI with CardLayout for smooth navigation.
- Sidebar with hover states and active-tab highlights.
- (Planned) Dark/Light mode theme switching.
(Note: Date Utilities are currently planned/under construction).
- Programming Language: Java 17
- UI Framework: Java Swing
- Build Tool: Maven
- Database: Flat-file storage (
events_data.txt) - No external SQL/NoSQL required. - Dependencies: None (Core Java only)
- IDE: Any Java IDE (IntelliJ IDEA, Eclipse, VS Code).
Date-Time-Utility-Library
βββ docs/ # Documentation and images.
βββ src/main/java/
β βββ app/
β β βββ Main.java
β βββ model/
β β βββ Event.java
β βββ scheduler/
β β βββ EventScheduler.java
β βββ storage/
β β βββ FileManager.java
β βββ ui/
β β βββ AddEvent.java
β β βββ CalendarView.java
β β βββ Dashboard.java
β β βββ ThemeManager.java
β β βββ custom/
β β β βββ ModernButton.java
β β β βββ RoundedPanel.java
β β βββ panels/
β β βββ AboutPanel.java
β β βββ AgeCalculatorPanel.java
β β βββ AllEventsPanel.java
β β βββ CalendarPanel.java
β β βββ DashboardPanel.java
β β βββ DateUtilityPanel.java
β β βββ EventSchedulerPanel.java
β β βββ SettingsPanel.java
β β βββ TimeUtilityPanel.java
β βββ utility/
β βββ AgeCalculator.java
β βββ DateUtility.java
β βββ TimeUtility.java
βββ .gitignore
βββ LICENSE
βββ pom.xml # Maven build configuration
βββ README.md
Follow these steps to run the project from scratch on your local machine:
-
Clone the repository
git clone https://github.com/ashmitraj0344/Date-Time-Utility-Library.git
-
Navigate to the project folder
cd Date-Time-Utility-Library -
Install dependencies and Build project Since this is a Maven project, compile the source files using:
mvn clean install
-
Run the project You can compile and run the application directly using
javacandjava:javac -d target -sourcepath src/main/java src/main/java/app/Main.java java -cp target app.Main
Alternatively, open the project in your favorite IDE and run
app.Main.java.
- Java Version: JDK 17 or higher.
- Maven: Version 3.6.0 or higher.
- Database: None required.
- OS: Windows, macOS, or Linux (requires GUI environment).
- Dashboard: Upon launching, the dashboard gives you a quick overview of your events. Use the left sidebar to navigate.
- Adding an Event: Click on the "Event Scheduler" tab or use the "Add Event" dialog to create a new task. Fill out the mandatory Date (
yyyy-MM-dd) and Time (HH:mm) fields. - Setting Reminders: When adding an event, check "Set Reminder" and choose your offset. Keep the app open; a popup will appear when the time arrives.
- Time & Age Calculations: Navigate to the respective tabs in the sidebar, input your date/time, and see instant calculated results.
Place the screenshots of your application in the docs/screenshots/ folder to display them here:
| Dashboard | Add Event | Time Utilities |
|---|---|---|
![]() |
![]() |
![]() |
This project requires minimal configuration. Data is saved locally in the root directory as events_data.txt.
- No environment variables are necessary.
- The
pom.xmlhandles the compiler configuration (Source/Target set to Java 17).
The project relies entirely on Core Java (Standard Library).
- No external libraries (like Hibernate, Spring, or Apache Commons) are used, making it incredibly lightweight and easy to run anywhere.
The application follows a standard monolithic MVC-like (Model-View-Controller) pattern:
- Model: Represents the core data structures (e.g.,
Event.java). - Storage Layer:
FileManager.javaintercepts model data and handles I/O operations (Serialization/Deserialization using a custom|||delimiter). - Scheduler/Service Layer:
EventScheduler.javaacts as the controller, maintaining the state of all events in memory and running a daemon Thread (startReminderCheckLoop()) to trigger UI callbacks. - View (UI): Swing JFrame and JPanels that listen to the
EventSchedulerand update dynamically.
app: Contains theMainclass which bootstraps the Swing UI and applies the cross-platform Look and Feel.model: Contains POJOs (Plain Old Java Objects) likeEventrepresenting the data.scheduler: Contains the core logic for filtering, searching, and managing the reminder thread.storage: Contains logic for reading/writing data to the filesystem safely.ui: Contains the mainDashboardframe, custom dialogs, and individualpanelsmapped to the sidebar navigation.utility: Contains static helper methods for pure calculations (AgeCalculator,TimeUtility).
- Fully implement the
DateUtilityfunctionality. - Add recurring events (daily, weekly, monthly).
- Integrate an SQLite or H2 embedded database for better querying and indexing.
- Allow exporting events to
.ics(iCalendar) format. - Add drag-and-drop support in the Calendar View.
Contributions are welcome! To contribute:
- Fork the repository.
- Create a new branch:
git checkout -b feature/YourFeatureName - Commit your changes:
git commit -m 'Add some feature' - Push to the branch:
git push origin feature/YourFeatureName - Open a Pull Request.
This project is licensed under the MIT License - see the LICENSE file for details.
This project is collaboratively developed by:
- Aman Dwivedi
- Ashmit Raj
- Bhumika Suryawanshi
- Soumili Mandal
- Shubham Kumar
- Dinesh Bagariya
- Aniket / Aditya
- And other contributors
- Built entirely with Java Swing and standard
java.timeAPIs. - UI inspiration and design principles adapted for modern desktop constraints.


