繁体   English   中英

Java 将秒转换为具有独特输出的天、小时、分钟、秒

[英]Java convert seconds to days, hours, minutes, seconds with unique outputs

所以我需要将秒转换为天、小时、分钟、秒。

但是我需要有独特的输出,如果它们返回零,则不将它们包含在响应中。

因此,如果输入 3600 秒,则需要返回 1 小时而没有其他任何内容。 如果响应返回 0,我如何跳过一行。

这是我到目前为止的代码。

import java.util.Scanner;

public class ps9 {
public static void main(String [] args){
    Scanner in = new Scanner(System.in);
    System.out.println("Enter number of seconds");
    int input = in.nextInt();

    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;

    if (numberOfDays > 0) {
        System.out.println(numberOfDays + " day(s)");
        if (numberOfHours != 0)
        System.out.println(numberOfHours + " hour(s)");
        nextLine;
        System.out.println(numberOfMinutes + " minute(s)");
        System.out.println(numberOfSeconds + " second(s)");
    }
     else if (numberOfHours >= 0 )
    {
        System.out.println(numberOfHours +" hour(s)");
        System.out.println(numberOfMinutes + " minute(s)");
        System.out.println(numberOfSeconds + " second(s)");
    }
    else if (numberOfMinutes >= 0 )
    {
        System.out.println(numberOfMinutes + " minute(s)");
        System.out.println(numberOfSeconds + " second(s)");
    }
    else if (numberOfSeconds >= 0)
    {
        System.out.println(numberOfSeconds + " second(s)");
    }
}

}

由于您只想在输出为 0 时跳过输出,因此请使用一系列if语句而不是if-else ,因为您希望彼此独立地执行这些语句。

这将减少可能的代码重复

Duration d = Duration.ofSeconds(3660);
long days = d.toDays();
d = d.minusDays(days);
long hours = d.toHours();
d = d.minusHours(hours);
long mins = d.toMinutes();
d = d.minusMinutes(mins);
long seconds = d.getSeconds();

if (days > 0) {
    System.out.println(days + " day(s)");
}
if (hours > 0) {
    System.out.println(hours + " hour(s)");
}
if (mins > 0) {
    System.out.println(mins + " min(s)");
}
if (seconds > 0) {
    System.out.println(seconds + " second(s)");
}

请注意,我很懒,当涉及到日期/时间操作时,我使用了可用的库

您可以检查此代码,但我没有包括秒。 minutes就开始了。

对于秒,您可以使用timeInterval来获取秒的%

public static final String INVALID_MESSAGE = "Invalid Value";
 
public static void printYearsAndDays(long minutes) {
    if (minutes < 0) {
        System.out.println(INVALID_MESSAGE);
    } else {
 
        int timeInterval = 60;
        int dayInterval = 24;
        int yearInterval = 365;
        long remainingMinutes = minutes % timeInterval;
        long remainingHours = (minutes / timeInterval) % dayInterval;
        long remainingDays = ((minutes / timeInterval) / dayInterval) % yearInterval;
        long remainingYears = ((minutes / timeInterval) / dayInterval) / yearInterval;
 
        String minutesDisplay = remainingMinutes + "min ";
        String hoursDisplay = remainingHours + "h ";
        String daysDisplay = remainingDays + " d";
        String yearsDisplay = remainingYears + " y";
 
 
        System.out.println(minutes+ " min = "+ yearsDisplay + " and " + daysDisplay);
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM