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

时间:2015-04-16 16:55:52

标签: java math time date-conversion

我很难找到将秒数转换为年,月,周,小时,分钟,秒的解决方案。

示例:

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

2 个答案:

答案 0 :(得分:3)

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

Date类中有一些方法可以帮助您实现这一目标,但请记住,目前这些方法已被弃用。

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 + "");
    }

}

答案 1 :(得分:2)

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

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;

语法仅供您了解上一个值的来源。

取决于月份(例如2月份的天数比其他任何天数少),如果您正在考虑闰年(366天)与否。