将秒转换为年时分秒

Converting seconds to Year Hour Minutes Seconds

我是新手,标准的开始,所以我会省略其余部分。 我是否必须将每个 int 转换为秒,或者这是对的吗? 因为当我向后计算时,手动计算最终语句的秒数,我得到小时数的差异。

谢谢卡苏

    Scanner input = new Scanner(System.in);
    final int secmin = 60;
    final int day = 24;
    final int year = 365;
    int seconds = input.nextInt();
    int minutes = seconds / secmin;
    int remainSec = seconds % secmin ;

    int hours = minutes / secmin;
    int remainMin = hours % secmin;
    int days = hours / day;
    int remainHours = hours % day;
    int years = days / year;
    int remainDays = days % year;

    if (minutes <= 59)
    {
        System.out.println(seconds + " seconds is " + minutes +" minutes and " + remainSec + " seconds");
    }
    else if (hours <= 23) 
    {   

        System.out.println(seconds + " seconds is " + hours +" hours and " + remainMin + " minutes " + remainSec + " seconds");
    }
    else if (days <= 364)
    {   

        System.out.println(seconds + " seconds is " + days + " days "  + remainHours +" hours and " + remainMin + " minutes " + remainSec + " seconds");
    }

    else
    {
        System.out.println(seconds + " seconds is " + years + " years " + remainDays + " days "  + remainHours +" hours and " + remainMin + " minutes " + remainSec + " seconds");
    }

我认为需要更改此声明: 来自 "int remainMin = hours % sec min;"

到“int remainMin = minutes % secmin;”。

休息一切看起来不错。

代码看起来不错。但是,我会从 if 语句中删除 "Magic Numbers":

Scanner input = new Scanner(System.in);
final int secmin = 60;
final int day = 24;
final int year = 365;
int seconds = input.nextInt();
int minutes = seconds / secmin;
int remainSec = seconds % secmin ;

int hours = minutes / secmin;
int remainMin = hours % secmin;
int days = hours / day;
int remainHours = hours % day;
int years = days / year;
int remainDays = days % year;

if (minutes < secMin)
{
    System.out.println(seconds + " seconds is " + minutes +" minutes and " + remainSec + " seconds");
}
else if (hours < day) 
{   

    System.out.println(seconds + " seconds is " + hours +" hours and " + remainMin + " minutes " + remainSec + " seconds");
}
else if (days < year)
{   

    System.out.println(seconds + " seconds is " + days + " days "  + remainHours +" hours and " + remainMin + " minutes " + remainSec + " seconds");
}

else
{
    System.out.println(seconds + " seconds is " + years + " years " + remainDays + " days "  + remainHours +" hours and " + remainMin + " minutes " + remainSec + " seconds");
}

我知道 year/day/hour/minute/second 比率都是相当静态的,但是如果有人想以 10 秒到分钟和 10 分钟到小时来查看您的代码怎么办?那么你只需要改变一个地方,而不是两个。

在生产应用程序中,这可能会增长到代码中的数百个位置,并且很难追查到每一个位置。

我确实输入了=

1234234234 秒

输出=

1234234234秒是39年50天2小时2分34秒

总和=

1229904000 秒 + 4320000 秒 + 7200 秒 + 120 秒 + 34 秒 = 1234231354 秒

差异=

2880 秒

当我改变时:

int remainMin = hours % secmin; "to" int remainMin = minutes % secmin;

然后:

1234234234秒是39年50天2小时50分34秒

结果:

48 分钟添加

1229904000 秒 + 4320000 秒 + 7200 秒 + 3000 秒 + 34 秒 = 1234234234 秒

相差0.

感谢 user2006544 的更正和 Steve 的改进。