将秒转换为年、月、周、小时、分钟和秒

Convert seconds into years, months, weeks, hours, minutes and seconds

我正在努力寻找将秒转换为年、月、周、小时、分钟、秒的解决方案。

示例:

public Time(int inputSeconds) {
    int years = 0;
    int months = 0;
    int weeks = 0;
    int days = 0;
    int hours = 0;
    int seconds = 0;
}

首先我的建议是将时间变量类型从 int 更改为 long。

Date class 中有某些方法可以帮助您实现此目的,但请记住,这些方法目前已被弃用。

import java.util.Date;
import java.util.Random;


class MyTime {

    int years;
    int months;
    int day;
    int hours;
    int seconds;

    public MyTime(long inputSeconds) {
        Date d = new Date(inputSeconds);
        this.years = d.getYear();
        this.months = d.getMonth();
        this.day = d.getDay();
        this.hours = d.getHours();
        this.seconds = d.getSeconds();
    }

    public static void main(String[] args) {
        new MyTime(new Date().getTime()).show();
    }

    public void show() {
        System.out.println("" + years + "");
        System.out.println("" + months + "");
        System.out.println("" + day + "");
        System.out.println("" + hours + "");
        System.out.println("" + seconds + "");
    }

}

对于周、日、小时、分钟和秒,可以在转换中使用一些简单的数学运算,例如:

int weeks = seconds / 604800;
int days = (seconds % 604800) / 86400;
int hours = ((seconds % 604800) % 86400) / 3600;
int minutes = (((seconds % 604800) % 86400) % 3600) / 60;
seconds = (((seconds % 604800) % 86400) % 3600) % 60;

语法只是为了让你了解以前的值来自哪里。

这取决于月份(例如二月有更少天比其他任何天),以及是否考虑闰年(366 天)。