/**
Use integer division and modulo:
1 minute = 60 seconds
1 hour = 60 minutes
1 day = 24 hours
1 week = 7 days
*/
/**
Convert a total number of seconds into weeks, days, hours,
minutes, and seconds. The method receives the total seconds
and returns a simple record holding each component.
*/
public class ConvertSeconds {
// A small record to hold the result (Java 16+)
public record TimeParts(long weeks, long days, long hours, long minutes, long seconds) {}
public static TimeParts convertSeconds(long totalSeconds) {
final long SECS_PER_MIN = 60;
final long SECS_PER_HOUR = 60 * SECS_PER_MIN;
final long SECS_PER_DAY = 24 * SECS_PER_HOUR;
final long SECS_PER_WEEK = 7 * SECS_PER_DAY;
// Compute each unit using integer division and modulo
long weeks = totalSeconds / SECS_PER_WEEK;
totalSeconds %= SECS_PER_WEEK;
long days = totalSeconds / SECS_PER_DAY;
totalSeconds %= SECS_PER_DAY;
long hours = totalSeconds / SECS_PER_HOUR;
totalSeconds %= SECS_PER_HOUR;
long minutes = totalSeconds / SECS_PER_MIN;
long seconds = totalSeconds % SECS_PER_MIN;
return new TimeParts(weeks, days, hours, minutes, seconds);
}
public static void main(String[] args) {
long seconds = 1_000_000;
TimeParts t = convertSeconds(seconds);
System.out.println(t.weeks() + " weeks, "
+ t.days() + " days, "
+ t.hours() + " hours, "
+ t.minutes() + " minutes, "
+ t.seconds() + " seconds");
}
}
/*
run:
1 weeks, 4 days, 13 hours, 46 minutes, 40 seconds
*/