convert a 4-digit military time into the standard 12 hour time format(将 4 位军用时间转换为标准 12 小时时间格式)
问题描述
我想做的事:
我正在尝试将 4 位军用时间转换为标准的 12 小时时间格式,使用冒号和添加的 PM 或 AM,而不使用在我的代码之前导入任何内容(我正在制作一种需要Java 101 技术).
I'm trying to convert a 4-digit military time into the standard 12 hour time format, with a colon and an added PM or AM without the use of importing anything before my code (I'm making a method that requires nothing other than java 101 techniques).
我的情况:
我有 milTime,我现在每次运行它时都会手动更改它(如顶部声明的,当前为 1100),直到我将其转换为方法并提交分配,其中它将接受 milTime,并将返回 milTimeString 供主程序打印.我目前正在使用 BlueJ 作为 IDE,(我不确定这是否是最好的?)
I have milTime, which I manually change around for now every time I run it(as declared up top, currently at 1100), until I convert it into a method and submit the assignment, in which it will take in milTime, and will return milTimeString for the main program to print. I'm currently using BlueJ as an IDE, (I'm not sure if that's the best one to use?)
输入输出示例:
如果给出 0056,我必须在凌晨 12:56 回来.如果给了 1125,我必须在上午 11 点 25 分返回.如果给了 2359,我必须在晚上 11:59 回来.
If 0056 were given, I would have to return 12:56am. If 1125 were given, I would have to return 11:25am. If 2359 were given, I would have to return 11:59pm.
我需要帮助的问题
- 当我执行时,我的 am/pm 布尔值在某处失败,它总是输出 pm,无论我输入 11:24 还是 23:24.
- 很明显,我正在努力生成输出,但我不知道更简单的方法(除了导入一些东西来完成它for我,我不想要做).
- When I execute, my am / pm boolean fails somewhere and it always outputs pm, no matter if I input 11:24 or 23:24.
- It's probably obvious I'm working too hard to generate the output, but I don't know an easier way (Other than importing something to do it for me, which I don't want to do).
我谦虚地接受对我臃肿的当前代码的任何批评,以及对我冗长请求的任何更正.我环顾四周寻找替代答案,一切都涉及到我以外的导入或知识.感谢您到目前为止的时间,并提前感谢大家.
I humbly submit to any criticism on my bloated current code, and any corrections in my long-winded request. I've looked around for alternate answers, and everything involved importing or knowledge beyond me. Thanks for your time so far, and thanks in advance everyone.
public class timeTest
{
public static void main(String []args)
{
/*Declare my variables*/
int milTime = 2400;
String timeString = "";
boolean pm;
/*determine AM or PM and convert over 1200 into a clock's digits */
if (milTime >1259)
{
if (milTime <1200)
{
pm = false;
}
else
{
pm = true;
}
milTime = (milTime - 1200);
}
else
{
}
/*figure out my digits*/
int fourthDigit = milTime%10;
milTime = milTime/10;
int thirdDigit = milTime%10;
milTime = milTime/10;
int secondDigit = milTime%10;
milTime = milTime/10;
int firstDigit = milTime%10;
/*build each side of the colon*/
String hoursString = thirdDigit + "" + fourthDigit;
String minutesString = firstDigit + "" + secondDigit;
/*determine if the first digit is zero and if so, omit it*/
if (firstDigit == 0 )
{
minutesString = "" + secondDigit;
}
else
{
}
if (secondDigit == 0)
{
minutesString = "12";
}
else
{
}
/*build the total string and return the result with AM or PM based on conditional boolean.*/
if (pm = true)
{
timeString = (minutesString + ':' + hoursString + "pm");
}
else
{
}
if (pm = false)
{
timeString = (minutesString + ':' + hoursString + "am");
}
else
{
}
System.out.println(timeString);
}
}
推荐答案
您的问题是您应该使用自己的自定义数据格式化程序.我喜欢使用 Joda Time library 及其 DateTime 类而不是内置的 Java Date 和 Calendar 类.因此,我建议您使用 SimpleDateFormatrel="noreferrer">DateTimeFormat 创建一个 DateTimeFormatter,然后您将使用它来将您的字符串转换为 日期时间.每个输入和输出都需要一个 DateTimeFormatter.例如:
Your problem is screaming out that you should be using your own custom data formatter. I like using the Joda Time library and its DateTime class instead of the built-in Java Date and Calendar classes. Therefore, instead of SimpleDateFormat, I recommend that you use a DateTimeFormat to create a DateTimeFormatter, which you will then use to convert your String into a DateTime. You will need one DateTimeFormatter for each of input and output. For example:
String rawTimestamp = "2300"; // For example
DateTimeFormatter inputFormatter = DateTimeFormat.forPattern("HHmm");
DateTimeFormatter outputFormatter = DateTimeFormat.forPattern("hh:mm a");
DateTime dateTime = inputFormatter.parseDateTime(rawTimestamp);
String formattedTimestamp = outputFormatter.print(dateTime.getMillis());
return formattedTimestamp;
试试这个!
这篇关于将 4 位军用时间转换为标准 12 小时时间格式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:将 4 位军用时间转换为标准 12 小时时间格式
基础教程推荐
- 如何使用 Eclipse 检查调试符号状态? 2022-01-01
- 如何强制对超级方法进行多态调用? 2022-01-01
- Java 中保存最后 N 个元素的大小受限队列 2022-01-01
- 首次使用 Hadoop,MapReduce Job 不运行 Reduce Phase 2022-01-01
- Spring Boot Freemarker从2.2.0升级失败 2022-01-01
- 在螺旋中写一个字符串 2022-01-01
- 如何对 HashSet 进行排序? 2022-01-01
- 由于对所需库 rt.jar 的限制,对类的访问限制? 2022-01-01
- 如何使用 Stream 在集合中拆分奇数和偶数以及两者的总和 2022-01-01
- 如何在不安装整个 WTP 包的情况下将 Tomcat 8 添加到 Eclipse Kepler 2022-01-01