将分秒缩短为数年,数天等

时间:2015-10-28 11:07:01

标签: java datetime

我必须编写一个程序来计算秒数,天数,小时数,分钟数,秒数。

到目前为止我的代码:

public static void main(String[] args) {
    long s = IOTools.readLong("Give seconds:");
    long a = s / 31536000;
    long t = (s % 3153600) / 86400;  
    long h = ((s % 3153600) % 86400) / 3600;
    long m = (((s % 3153600) % 86400) % 3600) / 60;
    long r = (((s % 3153600) % 86400) % 3600) % 60;

    System.out.println( a + " year(s) " + t + " day(s) " + h + " hour(s) " + m + " minute(s) " + r + " second(s)!");            
}

我想让它变得更简单,例如使用if-else条件。类似于:将秒数除以31536000,将其保存在a中。如果有剩余部分,请执行此操作,依此类推。但我不知道如何开始。

我也有问题来进行类型转换。我不想一直使用long,因为当程序计算天数时不再需要{。}}。

3 个答案:

答案 0 :(得分:1)

如您所知,您可以在每个步骤后使用剩余部分:

long s = IOTools.readLong("Give seconds:");
long a = s / 31536000;
s %= 31536000;
long t = s / 86400;
s %= 86400;
long h = s / 3600;
s %= 3600;
long m = s / 60;
long r = s % 60;

答案 1 :(得分:1)

我认为这里的Calendar课程非常方便,您可以避免复杂的计算。从输入中读取秒数后,您只需将它们转换为毫秒并将结果传递给Calendar实例。

然后,您可以像这样获取日,月,年:

long s = IOTools.readLong("Give seconds:");
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(s * 1000);
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH);
int day = calendar.get(Calendar.DAY);

答案 2 :(得分:-2)

    BigDecimal input = new BigDecimal("your input");
    long longVal = input.longValue();
    int hours = (int) longVal / 3600;
    int remainder = (int) longVal - hours * 3600;
    int mins = remainder / 60;
    remainder = remainder - mins * 60;
    int secs = remainder;

    System.out.println("hours: "+hours);
    System.out.println("Mins: "+mins);
    System.out.println("Sec: "+secs)