Java:将秒数转换为分钟,小时和天

dsf*_*adf 0 java

"输出应该是这样的(回输输入是个好主意):你输入了500,000秒,即5天,18小时,53分钟和20秒.(5天18:53:20小时)

所以你们可以告诉我应该怎么做,理解和做到最简单的方法是什么,请帮助大家,我真的卡住了,他说"没有硬编码",我不确定它是什么但是我认为他希望我们为它们分配常量.

alk*_*ber 27

使用内置的示例TimeUnit.

long uptime = System.currentTimeMillis();

long days = TimeUnit.MILLISECONDS
    .toDays(uptime);
uptime -= TimeUnit.DAYS.toMillis(days);

long hours = TimeUnit.MILLISECONDS
    .toHours(uptime);
uptime -= TimeUnit.HOURS.toMillis(hours);

long minutes = TimeUnit.MILLISECONDS
    .toMinutes(uptime);
uptime -= TimeUnit.MINUTES.toMillis(minutes);

long seconds = TimeUnit.MILLISECONDS
    .toSeconds(uptime);
Run Code Online (Sandbox Code Playgroud)


amb*_*bes 15

我的基本java算术计算的快速答案是这样的:

首先考虑以下值:

1 Minute = 60 Seconds
1 Hour = 3600 Seconds ( 60 * 60 )
1 Day = 86400 Second ( 24 * 3600 )
Run Code Online (Sandbox Code Playgroud)
  1. 首先将输入除以86400,如果您可以得到大于0的数字,则这是天数.2.将从第一次计算得到的剩余数字除以3600,这将给你小时数
  2. 然后将第二次计算的余数除以60,即分钟数
  3. 最后,第三次计算的剩余数字是秒数

代码段如下:

int input=500000;
int numberOfDays;
int numberOfHours;
int numberOfMinutes;
int numberOfSeconds;

numberOfDays = input / 86400;
numberOfHours = (input % 86400 ) / 3600 ;
numberOfMinutes = ((input % 86400 ) % 3600 ) / 60 
numberOfSeconds = ((input % 86400 ) % 3600 ) % 60  ;
Run Code Online (Sandbox Code Playgroud)

我希望对你有所帮助.

  • 为什么要分开声明和定义变量? (2认同)

小智 6

最简单的方法

    Scanner in = new Scanner(System.in);
    System.out.println("Enter seconds");
    int s = in.nextInt();

    int sec = s % 60;
    int min = (s / 60)%60;
    int hours = (s/60)/60;

    System.out.println(hours + ":" + min + ":" + sec);
Run Code Online (Sandbox Code Playgroud)


小智 6

应该是这样的:

    public static void calculateTime(long seconds) {
            int day = (int)TimeUnit.SECONDS.toDays(seconds);        
            long hours = TimeUnit.SECONDS.toHours(seconds) - (day *24);
            long minute = TimeUnit.SECONDS.toMinutes(seconds) - (TimeUnit.SECONDS.toHours(seconds)* 60);
            long second = TimeUnit.SECONDS.toSeconds(seconds) - (TimeUnit.SECONDS.toMinutes(seconds) *60);

            System.out.println("Day " + day + " Hour " + hours + " Minute " + minute + " Seconds " + second);

        }
Run Code Online (Sandbox Code Playgroud)

说明:

TimeUnit.SECONDS.toHours(seconds)将使您直接从秒转换为小时,而无需花费几天的时间。减去您已经拥有的天数的小时数,即day * 24。您现在剩下了几个小时。分钟和秒相同。您需要分别减去已经得到的小时和分钟。


小智 1

看看班级:

org.joda.time.DateTime
Run Code Online (Sandbox Code Playgroud)

这允许您执行以下操作:

old = new DateTime();
new = old.plusSeconds(500000);
System.out.println("Hours: " + (new.Hours() - old.Hours()));
Run Code Online (Sandbox Code Playgroud)

但是,您的解决方案可能更简单:

您需要计算出一天有多少秒,将输入除以结果以获得天数,然后从输入中减去它以保留余数。

然后,您需要计算出余数有多少小时,然后是分钟,最后的余数是秒。

这就是为您完成的分析,现在您可以专注于代码。

您需要询问她/他所说的“无硬编码”是什么意思。一般来说,它意味着传递参数,而不是固定输入值。有很多方法可以做到这一点,具体取决于您运行代码的方式。属性是Java中的一种常见方式。