2014-11-24 86 views
0

我有这个程序的麻烦。我输入上午时间和下午时间。然而,当我到达12点时,一切都会变得混乱。它继续添加13,14,15等。有没有办法我可以设置13 = 1,14 = 2,15 = 3等。上午和下午帮助在java

String format = "HH:mm:ss a"; 
SimpleDateFormat time = new SimpleDateFormat(format, Locale.US); 
System.out.println("enter what time first person is leaving"); 
int leaving1 = in.nextInt(); 
System.out.println("enter if 1(am) 2(pm)"); 
int ampm = in.nextInt(); 

if (ampm == 1 && ampm2 == 2){ 

while (leaving1 <= 12){ 

sametime++; 
} 
leaving1 = leaving1+sametime-12; 
System.out.println(leaving1); 
+0

这听起来像它只是用24小时制,这与AM和PM摒弃:如果你要几个小时前导零1到10之间

String format = "h:mm:ss a"; 

或用两个。您必须向我们提供您的代码示例,以便我们可以获得更好的图片,但我认为PSR的答案可能会帮助您解决问题。 – Makoto 2014-11-24 05:32:11

+0

即使它以24小时制格式存储它也不用担心可以使用SimpleDateFormat将其转换为12小时制。 但确保SimpleDateFormat应该在方法中进行本地初始化,因为它不是线程安全的。 – Pushkar 2014-11-24 05:37:21

+0

我添加了一些示例代码@Makoto – 2014-11-24 05:48:25

回答

0

你的时间格式不正确。

根据SimpleDateFormat,HH:mm:ss a的文档将始终以24小时制表示产生时间格式,因为H适用于输出24小时时间值。

修复很简单:将其更改为小写字母h。

String format = "hh:mm:ss a"; 
+0

为什么不能打印出来? (在第二个代码段中) – 2014-11-24 06:36:43

+0

这不是我想要回答的问题......看起来像是你偷偷摸摸的那样。但是,你在那里有一个无限循环。如果你打算在循环中使用它,你最好弄清楚为什么你不更新'leaving1'。 – Makoto 2014-11-24 06:38:07

+0

leaving1是我输入的一个数字 – 2014-11-24 06:43:02