java - 通过获取用户的输入,在 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.time.LocalTime
并java.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
推荐阅读
- python - 可以将 cosmos db id 覆盖为整数类型吗?
- java - 通过java流计算二维数组中的邻居
- r - 如何通过单击文件而不打开mac的终端来运行R闪亮的应用程序
- angular - 离子应用中的循环依赖
- node.js - Javascript Promises 和 map 函数
- oracle - 当查询返回值并且没有“EXCEPTION WHEN NO_DATA_FOUND THEN”时传递数据(Oracle 11g)
- c# - 使用 C# 将文件上传到 azure 文件存储使目录中的所有其余文件长度为 0
- c# - CultureInfo 对大名称(字符串)的“奇怪”响应
- mongodb - 任何云功能都可以有英国 IP 地址吗?
- python - 远程连接到 MongoDB 数据库而不以明文形式存储密码