将秒转换为小时、分钟和秒?

use*_*063 2 java

所以我试图制作一个可以将 s 从输入转换为 h、m 和 s 的程序。到目前为止,我的代码如下所示:

import java.util.Scanner;

class q2_5{
  public static void main(String args[]){

    Scanner input = new Scanner(System.in);
    int s=0;//seconds
    int m=0;//minutes
    int h=0;//hour
    System.out.println("how many seconds?");
    s=input.nextInt();
    if(s >= 60){
      m=s/60;
    } if(m>=60){
      h=m/60;
    }
    System.out.println(s + "s = " + h + " h " + m + " m " + s + "s ");
  }
}
Run Code Online (Sandbox Code Playgroud)

好的,所以我必须将 s,m,h 初始化为 0 因为如果不是我在 if 语句中遇到问题,所以我只是将它设置为 0,因为我以后可以更改它:) 好的。所以这个程序现在的问题是,如果我输入 3603 我得到这个输出:3603s = 1 h 60 m 3603s,如果我输入 3600 我得到这个:3600s = 1 h 60 m 3600s,但输出应该有分别为 3603s = 1h 0m 3s 和 3600s = 1h 0m 0s。关于如何解决这个问题的任何提示/建议/解决方案?:D 提前致谢!

Sho*_*jan 5

我的解决方案是:

 String secToTime(int sec) {
    int second = sec % 60;
    int minute = sec / 60;
    if (minute >= 60) {
        int hour = minute / 60;
        minute %= 60;
        return hour + ":" + (minute < 10 ? "0" + minute : minute) + ":" + (second < 10 ? "0" + second : second);
    }
    return minute + ":" + (second < 10 ? "0" + second : second);
}
Run Code Online (Sandbox Code Playgroud)


Bas*_*que 5

显然,您正在做一些功课/练习来学习 Java。但是仅供参考,在实际工作中,您不需要进行这些计算和操作。有一个课程。

java.time.Duration

在一段时间内,使用Duration该类。您无需进行数学运算。

Duration d = Duration.ofSeconds( s );
Run Code Online (Sandbox Code Playgroud)

代表未附加到时间线的时间跨度的字符串的标准ISO 8601格式接近您想要的输出:PnYnMnDTnHnMnS其中 P 标记开始,T 将任何年-月-日与任何时-分-秒分开。所以一个半小时是PT1H30M

java.time 类在解析或生成字符串时默认使用 ISO 8601 格式。

String output = d.toString() ;
Run Code Online (Sandbox Code Playgroud)

在 Java 9 及更高版本中,您可以调用这些to…Part方法来检索小时、分钟和秒的各个部分。


关于java.time

java.time框架是建立在Java 8和更高版本。这些类取代了麻烦的旧的遗留日期时间类,例如java.util.Date, Calendar, & SimpleDateFormat

要了解更多信息,请参阅Oracle 教程。并在 Stack Overflow 上搜索许多示例和解释。规范是JSR 310

现在处于维护模式Joda-Time项目建议迁移到java.time类。

您可以直接与您的数据库交换java.time对象。使用符合JDBC 4.2或更高版本的JDBC 驱动程序。不需要字符串,不需要类。Hibernate 5 & JPA 2.2 支持java.timejava.sql.*

从哪里获得 java.time 类?

哪个 java.time 库与哪个版本的 Java 或 Android 一起使用的表