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

Java:将秒转换为分钟、小时和天,java,Java,“输出应如下所示(最好回显输入):输入500000秒,即5天18小时53分20秒。(5天18:53:20小时) 所以你们能告诉我应该怎么做吗,最简单的理解和做的方法是什么,请帮助大家,我真的被卡住了,他还说“不要硬编码”,我不太确定这是什么,但我想他希望我们给他们分配常量。看一下这个类 org.joda.time.DateTime 这允许您执行以下操作: old = new DateTime(); new = old.plusSeconds(500000); System.out.printl

“输出应如下所示(最好回显输入):输入500000秒,即5天18小时53分20秒。(5天18:53:20小时)


所以你们能告诉我应该怎么做吗,最简单的理解和做的方法是什么,请帮助大家,我真的被卡住了,他还说“不要硬编码”,我不太确定这是什么,但我想他希望我们给他们分配常量。

看一下这个类

org.joda.time.DateTime
这允许您执行以下操作:

old = new DateTime();
new = old.plusSeconds(500000);
System.out.println("Hours: " + (new.Hours() - old.Hours()));
但是,您的解决方案可能更简单:

您需要计算出一天中的秒数,将输入除以结果得到天数,然后从输入中减去以保留余数。 然后你需要计算出剩下的几个小时, 然后是会议记录, 最后的余数是秒

这是为您所做的分析,现在您可以关注代码了


您需要询问s/he“无硬编码”是什么意思,通常是指传递参数,而不是固定输入值。根据您运行代码的方式,有很多方法可以做到这一点。属性是java中常见的方法。

请查看该类

org.joda.time.DateTime
这允许您执行以下操作:

old = new DateTime();
new = old.plusSeconds(500000);
System.out.println("Hours: " + (new.Hours() - old.Hours()));
但是,您的解决方案可能更简单:

您需要计算出一天中的秒数,将输入除以结果得到天数,然后从输入中减去以保留余数。 然后你需要计算出剩下的几个小时, 然后是会议记录, 最后的余数是秒

这是为您所做的分析,现在您可以关注代码了


您需要询问s/he“无硬编码”是什么意思,通常是指传递参数,而不是固定输入值。根据您运行代码的方式,有很多方法可以做到这一点。属性是java中常见的方法。

我对基本java算术计算的快速回答如下:

首先考虑以下值:

1 Minute = 60 Seconds
1 Hour = 3600 Seconds ( 60 * 60 )
1 Day = 86400 Second ( 24 * 3600 )
  • 首先将输入除以86400,如果可以得到一个大于0的数字,这就是天数。 2.再次将第一次计算得到的剩余数值除以3600,这将得到小时数
  • 然后将第二次计算的剩余部分除以60,即分钟数
  • 最后,第三次计算的剩余数值是秒数
  • 代码片段如下所示:

    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  ;
    
    我希望能有所帮助
    给你。

    我对基本java算术计算的快速回答是:

    首先考虑以下值:

    1 Minute = 60 Seconds
    1 Hour = 3600 Seconds ( 60 * 60 )
    1 Day = 86400 Second ( 24 * 3600 )
    
  • 首先将输入除以86400,如果可以得到一个大于0的数字,这就是天数。 2.再次将第一次计算得到的剩余数值除以3600,这将得到小时数
  • 然后将第二次计算的剩余部分除以60,即分钟数
  • 最后,第三次计算的剩余数值是秒数
  • 代码片段如下所示:

    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  ;
    
    我希望能有所帮助 给您。

    您可以使用Java enum来执行数学运算并避免任何硬编码的值。然后我们可以使用和一对
    StringBuilder
    (s)以及一个来构建请求的输出。例如

    Scanner scanner = new Scanner(System.in);
    System.out.println("Please enter a number of seconds:");
    String str = scanner.nextLine().replace("\\,", "").trim();
    long secondsIn = Long.parseLong(str);
    long dayCount = TimeUnit.SECONDS.toDays(secondsIn);
    long secondsCount = secondsIn - TimeUnit.DAYS.toSeconds(dayCount);
    long hourCount = TimeUnit.SECONDS.toHours(secondsCount);
    secondsCount -= TimeUnit.HOURS.toSeconds(hourCount);
    long minutesCount = TimeUnit.SECONDS.toMinutes(secondsCount);
    secondsCount -= TimeUnit.MINUTES.toSeconds(minutesCount);
    StringBuilder sb = new StringBuilder();
    sb.append(String.format("%d %s, ", dayCount, (dayCount == 1) ? "day"
            : "days"));
    StringBuilder sb2 = new StringBuilder();
    sb2.append(sb.toString());
    sb2.append(String.format("%02d:%02d:%02d %s", hourCount, minutesCount,
            secondsCount, (hourCount == 1) ? "hour" : "hours"));
    sb.append(String.format("%d %s, ", hourCount, (hourCount == 1) ? "hour"
            : "hours"));
    sb.append(String.format("%d %s and ", minutesCount,
            (minutesCount == 1) ? "minute" : "minutes"));
    sb.append(String.format("%d %s.", secondsCount,
            (secondsCount == 1) ? "second" : "seconds"));
    System.out.printf("You entered %s seconds, which is %s (%s)%n",
            new DecimalFormat("#,###").format(secondsIn), sb, sb2);
    
    当我输入
    500000
    时,输出请求的(为post添加了手动换行符)-

    您可以使用Java枚举来执行计算并避免任何硬编码的值。然后,我们可以使用和一对
    StringBuilder
    (s)以及一个来构建请求的输出。例如

    Scanner scanner = new Scanner(System.in);
    System.out.println("Please enter a number of seconds:");
    String str = scanner.nextLine().replace("\\,", "").trim();
    long secondsIn = Long.parseLong(str);
    long dayCount = TimeUnit.SECONDS.toDays(secondsIn);
    long secondsCount = secondsIn - TimeUnit.DAYS.toSeconds(dayCount);
    long hourCount = TimeUnit.SECONDS.toHours(secondsCount);
    secondsCount -= TimeUnit.HOURS.toSeconds(hourCount);
    long minutesCount = TimeUnit.SECONDS.toMinutes(secondsCount);
    secondsCount -= TimeUnit.MINUTES.toSeconds(minutesCount);
    StringBuilder sb = new StringBuilder();
    sb.append(String.format("%d %s, ", dayCount, (dayCount == 1) ? "day"
            : "days"));
    StringBuilder sb2 = new StringBuilder();
    sb2.append(sb.toString());
    sb2.append(String.format("%02d:%02d:%02d %s", hourCount, minutesCount,
            secondsCount, (hourCount == 1) ? "hour" : "hours"));
    sb.append(String.format("%d %s, ", hourCount, (hourCount == 1) ? "hour"
            : "hours"));
    sb.append(String.format("%d %s and ", minutesCount,
            (minutesCount == 1) ? "minute" : "minutes"));
    sb.append(String.format("%d %s.", secondsCount,
            (secondsCount == 1) ? "second" : "seconds"));
    System.out.printf("You entered %s seconds, which is %s (%s)%n",
            new DecimalFormat("#,###").format(secondsIn), sb, sb2);
    
    当我输入
    500000
    时,输出请求的(为post添加了手动换行符)-


    谢谢大家的帮助,我真的很感激,但我确实做了一些思考,开始做一些伪代码,并想出了这个

    import java.util.Scanner;
    
    公共类项目{

    public static void main(String[] args) {
    
    
    
    //variable declaration  
    Scanner scan = new Scanner(System.in);
    final int MIN = 60, HRS = 3600, DYS = 84600;
    int input, days, seconds, minutes, hours, rDays, rHours;
    
    //input 
    System.out.println("Enter amount of seconds!");
    input = scan.nextInt();
    
    
    //calculations
    days = input/DYS;
    rDays = input%DYS;
    hours = rDays/HRS;
    rHours = rDays%HRS;
    minutes = rHours/MIN;
    seconds = rHours%MIN;
    
    //output
    if (input >= DYS) {
        System.out.println(input + " seconds equals to " + days + " days " + hours + " hours " + minutes + " minutes " + seconds + " seconds");
    }
    
    else if (input >= HRS && input < DYS) {
        System.out.println(input + " seconds equals to " + hours + " hours " + minutes + " minutes " + seconds + " seconds");
    }
    
    else if (input >= MIN && input < HRS) {
        System.out.println(input + " seconds equals to " + minutes + " minutes " + seconds + " seconds");
    }
    
    else if (input < MIN) {
        System.out.println(input + " seconds equals to seconds");
    }
    
    scan.close();
    
    
    }   
    
    publicstaticvoidmain(字符串[]args){
    //变量声明
    扫描仪扫描=新扫描仪(System.in);
    最终整数最小值=60,小时数=3600,DYS=84600;
    整数输入,天,秒,分钟,小时,日,小时;
    //输入
    System.out.println(“输入秒数!”);
    输入=scan.nextInt();
    //计算
    天数=输入/数据类型;
    rDays=输入%DYS;
    小时=日/小时;
    rHours=日百分比小时;
    分钟=罗尔/分钟;
    秒=小时%MIN;
    //输出
    如果(输入>=DYS){
    System.out.println(输入+“秒”等于“+天+“天”+小时+“小时”+分钟+“分钟”+秒+“秒”);
    }
    否则,如果(输入>=小时和输入=分钟和输入<小时){
    System.out.println(输入+秒等于+分钟+分钟+秒+秒);
    }
    否则如果(输入<最小值){
    System.out.println(输入+“秒等于秒”);
    }
    scan.close();
    }   
    

    我知道这看起来很无聊,但请记住,我还是个新手,不仅是Java,还是编程新手,谁知道伪代码真的很有用。

    谢谢大家的帮助,我真的很感激,但我确实做了一些思考,开始做一些伪代码,并想出了这个主意

    import java.util.Scanner;
    
    公共类项目{

    public static void main(String[] args) {
    
    
    
    //variable declaration  
    Scanner scan = new Scanner(System.in);
    final int MIN = 60, HRS = 3600, DYS = 84600;
    int input, days, seconds, minutes, hours, rDays, rHours;
    
    //input 
    System.out.println("Enter amount of seconds!");
    input = scan.nextInt();
    
    
    //calculations
    days = input/DYS;
    rDays = input%DYS;
    hours = rDays/HRS;
    rHours = rDays%HRS;
    minutes = rHours/MIN;
    seconds = rHours%MIN;
    
    //output
    if (input >= DYS) {
        System.out.println(input + " seconds equals to " + days + " days " + hours + " hours " + minutes + " minutes " + seconds + " seconds");
    }
    
    else if (input >= HRS && input < DYS) {
        System.out.println(input + " seconds equals to " + hours + " hours " + minutes + " minutes " + seconds + " seconds");
    }
    
    else if (input >= MIN && input < HRS) {
        System.out.println(input + " seconds equals to " + minutes + " minutes " + seconds + " seconds");
    }
    
    else if (input < MIN) {
        System.out.println(input + " seconds equals to seconds");
    }
    
    scan.close();
    
    
    }   
    
    publicstaticvoidmain(字符串[]args){
    //变量声明
    扫描仪扫描=新扫描仪(System.in);
    最终整数最小值=60,小时数=3600,DYS=84600;
    整数输入,天,秒,分钟,小时,日,小时;
    //输入
    System.out.println(“输入秒数!”);
    输入=scan.nextInt();
    //计算
    天数=输入/数据类型;
    rDays=输入%DYS;
    小时=日/小时;
    rHours=日百分比小时;
    分钟=罗尔/分钟;
    秒=小时%MIN;
    //输出
    如果(输入>=DYS){
    System.out.println(输入+“秒”等于“+天+“天”+小时+“小时”+分钟+“分钟”+秒+“秒”);
    }
    否则,如果(输入>=小时和输入