首页 > 解决方案 > 通过获取用户的输入,在 Java 中将时间格式化为 24 小时

问题描述

所有这些都是我从我的代码中得到的输出:

Enter hours: 12

Enter minutes: 60

Enter seconds: 60

Enter AM or PM: pm

24 hour clock time: 25:01:00

我的预期输出是:

Enter hours: 12

Enter minutes: 60

Enter seconds: 60

Enter AM or PM: pm



24 hour clock time: 13:01:00

这是负责转换时间的函数,我在其中输入 hr、min、sec 和 str,即来自用户的 am 或 pm:

public static void print24HourTime(int hr, int min, int sec, String str)
{
    //formatting the hours, minutes, seconds to 24 hour clock
    int hours = (hr + (sec / 60 + min) / 60) % 24;
    int minutes = (min + sec / 60) % 60;
    int seconds = sec % 60;
    if(minutes > 59)
    {
        minutes = 00;
        hours = hours + 1;
    }
    if(seconds > 59)
    {
        seconds = 00;
        minutes = minutes + 1;
    }
    if (str.toUpperCase().equals("AM"))
    {
        if(hours == 12)
        {
            hours = 00;
            System.out.printf("24 hour clock time: %02d:%02d:%02d%n", hours, minutes, seconds);
        }
        else
        {
            System.out.printf("24 hour clock time: %02d:%02d:%02d%n", hours, minutes, seconds);
        }
    }
    else if(str.toUpperCase().equals("PM"))
    {
        if(hours == 12)
        {
            hours = 12;
            System.out.printf("24 hour clock time: %02d:%02d:%02d%n", hours, minutes, seconds);
        }
        else
        {
            System.out.printf("24 hour clock time: %02d:%02d:%02d%n", hours + 12, minutes, seconds);
        }
    }
    else
    {
        System.out.println("Invalid AM or PM");
    }
}

标签: java

解决方案


您可以使用java.time.LocalTimejava.time.format.DateTimeFormatter实现它。

import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;
import java.util.Locale;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.print("Enter hours: ");
        int hours = Integer.parseInt(scanner.nextLine());

        System.out.print("Enter minutes: ");
        int minutes = Integer.parseInt(scanner.nextLine());

        System.out.print("Enter seconds: ");
        int seconds = Integer.parseInt(scanner.nextLine());

        System.out.print("Enter AM or PM: ");
        String amPm = scanner.nextLine();

        print24HourTime(hours, minutes, seconds, amPm);
    }

    public static void print24HourTime(int hr, int min, int sec, String str) {
        String strTime = hr + ":" + min + ":" + sec + " " + str;
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("h:m:s a", Locale.ENGLISH);
        try {
            LocalTime time = LocalTime.parse(strTime, dtf);
            System.out.println("24 hour clock time: " + time);
        } catch (DateTimeParseException e) {
            System.out.println("Invalid time");
        }
    }
}

示例运行:

Enter hours: 10
Enter minutes: 20
Enter seconds: 30
Enter AM or PM: AM
24 hour clock time: 10:20:30

另一个示例运行:

Enter hours: 10
Enter minutes: 20
Enter seconds: 30
Enter AM or PM: PM
24 hour clock time: 22:20:30

另一个示例运行:

Enter hours: 30
Enter minutes: 20
Enter seconds: 10
Enter AM or PM: AM
Invalid time

推荐阅读