在不使用SimpleDateFormat

时间:2019-02-25 21:23:25

标签: java parsing

我的计算机科学课有一个问题,可以使用SimpleDateFormat来有效解决,但是由于我的课程没有教我,我不允许使用它。

基本上问题是这个...

完成以下采用String参数的方法,该参数是美国12小时格式的时间,例如“ 06:12 PM”。

该方法以标准的国际24小时格式返回具有相同时间的字符串。例如,给定上面示例中的参数,该方法将返回“ 18:12”。带有AM的值表示从00:00到11:59的时间,表示PM的从12:00到23:59的时间。

调用Integer.parseInt()方法需要一个String参数,并返回等效的整数。

然后我应该简单地创建一个像这样的方法...

public static String convertTime(String amerFormat)
{

}

我只是不了解如何使用.parseInt()解决此问题,并且我尝试研究的任何内容仅使用SimpleDateFormat。那是这个问题的唯一可能的解决方案吗?如果没有它,我该怎么写呢?

2 个答案:

答案 0 :(得分:4)

尝试解决问题,好像您要解析的值不代表时间。而是尝试解析三个单独的值(小时,分钟,AM / PM)。你会怎么做?

您知道小时是两位数,并以':'结尾。因此,请提取这两个字符并将其解析为一个整数。

然后跳过“:”并重复几分钟。

最后,检查最后两个字符是AM还是PM。

现在您已经拥有了所有的碎片,请将它们转换为标准的国际时间格式。

编辑:如果您想提高效率,可以使用一些快捷方式。

如果时间是AM,小时不是12,则数字将相同。如果小时数是12,则将其更改为00。

否则,如果时间是PM,则删除最后三个字符,并将前两位数字替换为当前值+ 12(除非小时数为12,在这种情况下,不应更改它们)。

答案 1 :(得分:1)

我首先将字符串在空格上分成两部分。这样一来,您可以将06:12作为一部分,而将AM / PM作为第二部分。

然后我将在结肠上分割第一部分以分别获取小时和分钟,然后将其转换为整数的小时和分钟。

营业时间== 12到0。(我稍后会说明原因。)

如果AM / PM部分是PM(我不区分大小写),则将小时数加12。

然后是System.out.printf(“%02d:%02d”,小时,分钟)。 (或使用String的format方法。)

为什么将12小时变成0?在使用中,我们将午夜后10分钟写为“ 12:10 AM”。但是在24小时内,它写为“ 00:10”。中午10分钟是24小时制的“ 12:10 PM”或“ 12:10”。

有关所需的方法,请查看:

Integer.parseInt(String)从字符串转换为数字

Strings.split()可基于正则表达式拆分字符串,因此您可以执行wholeString.split(“”)拆分空格,然后从其中的第一个“ results [0] .split( “:”)分为几小时和几分钟。

String.format()用于格式化新值。