import java.time.Duration;
import java.time.LocalDateTime;
import java.time.Period;
import java.time.ZoneOffset;
public class TimeConverter {
public static void main(String[] args) {
// Example input: 102,420,852 seconds
long totalSeconds = 100_000_000L;
// 1. Create two points in time separated by the duration
LocalDateTime start = LocalDateTime.ofEpochSecond(0, 0, ZoneOffset.UTC);
LocalDateTime end = start.plusSeconds(totalSeconds);
// 2. Use Period for years, months, and days
Period period = Period.between(start.toLocalDate(), end.toLocalDate());
// 3. Use Duration for hours, minutes, and seconds
Duration duration = Duration.between(start.toLocalTime(), end.toLocalTime());
// Handle negative duration cases (if time components "wrap" a day)
if (duration.isNegative()) {
period = period.minusDays(1);
duration = duration.plusDays(1);
}
// 4. Output the results
System.out.println("Years: " + period.getYears());
System.out.println("Months: " + period.getMonths());
System.out.println("Days: " + period.getDays());
System.out.println("Hours: " + duration.toHours());
System.out.println("Minutes: " + duration.toMinutesPart());
System.out.println("Seconds: " + duration.toSecondsPart());
}
}
/*
run:
Years: 3
Months: 2
Days: 2
Hours: 9
Minutes: 46
Seconds: 40
*/