Practical Calendar Examples
Real-World Calendar Scenarios
Calendar operations are essential in various software applications. This section explores practical examples demonstrating calendar manipulation in Java.
Example 1: Event Management System
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
public class EventScheduler {
private List<Event> events = new ArrayList<>();
public void addEvent(String name, LocalDateTime dateTime) {
Event event = new Event(name, dateTime);
events.add(event);
}
public void listUpcomingEvents() {
LocalDateTime now = LocalDateTime.now();
events.stream()
.filter(event -> event.getDateTime().isAfter(now))
.forEach(System.out::println);
}
static class Event {
private String name;
private LocalDateTime dateTime;
public Event(String name, LocalDateTime dateTime) {
this.name = name;
this.dateTime = dateTime;
}
public LocalDateTime getDateTime() {
return dateTime;
}
@Override
public String toString() {
return name + " at " +
dateTime.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME);
}
}
public static void main(String[] args) {
EventScheduler scheduler = new EventScheduler();
scheduler.addEvent("LabEx Conference",
LocalDateTime.now().plusDays(30));
scheduler.addEvent("Team Meeting",
LocalDateTime.now().plusHours(12));
scheduler.listUpcomingEvents();
}
}
Example 2: Date Calculation Utilities
import java.time.LocalDate;
import java.time.temporal.ChronoUnit;
public class DateCalculationUtils {
public static long daysBetweenDates(LocalDate start, LocalDate end) {
return ChronoUnit.DAYS.between(start, end);
}
public static LocalDate addBusinessDays(LocalDate date, int days) {
LocalDate result = date;
int addedDays = 0;
while (addedDays < days) {
result = result.plusDays(1);
if (!(result.getDayOfWeek().getValue() == 6 ||
result.getDayOfWeek().getValue() == 7)) {
addedDays++;
}
}
return result;
}
public static void main(String[] args) {
LocalDate today = LocalDate.now();
LocalDate futureDate = today.plusMonths(3);
System.out.println("Days between dates: " +
daysBetweenDates(today, futureDate));
System.out.println("Next business day: " +
addBusinessDays(today, 5));
}
}
Calendar Operation Workflow
graph TD
A[Input Date/Time] --> B{Validation}
B -->|Valid| C[Process Calculation]
B -->|Invalid| D[Error Handling]
C --> E[Generate Result]
D --> F[Return Error Message]
Common Calendar Operations
Operation |
Description |
Use Case |
Date Comparison |
Compare two dates |
Scheduling |
Date Manipulation |
Add/subtract time |
Project Planning |
Time Zone Conversion |
Convert between zones |
Global Applications |
Period Calculation |
Compute time between dates |
Age Calculation |
Advanced Calendar Techniques
Time Zone Handling
import java.time.ZonedDateTime;
import java.time.ZoneId;
public class TimeZoneConverter {
public static ZonedDateTime convertTimeZone(
ZonedDateTime sourceDateTime,
ZoneId targetZone) {
return sourceDateTime.withZoneSameInstant(targetZone);
}
public static void main(String[] args) {
ZonedDateTime now = ZonedDateTime.now();
ZonedDateTime tokyoTime = convertTimeZone(
now, ZoneId.of("Asia/Tokyo")
);
System.out.println("Current Time: " + now);
System.out.println("Tokyo Time: " + tokyoTime);
}
}
Best Practices
- Use immutable date-time classes
- Handle time zones explicitly
- Validate input dates
- Use appropriate formatting methods
Practical Considerations for LabEx Developers
- Always consider different calendar systems
- Implement robust error handling
- Use built-in Java time utilities
- Test edge cases thoroughly
These practical examples demonstrate the versatility of Java's calendar and date-time capabilities, providing developers with powerful tools for managing temporal data in various applications.