How to convert seconds into weeks, days, hours, minutes, and seconds in Java

1 Answer

0 votes
/**
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

*/

 



answered 12 hours ago by avibootz

Related questions

...