好的,所以我有一个时钟类,最初设置为24小时制,但我必须使用这种方法将时钟显示为12小时制!我已经尝试了几个小时,但已经失败了!请帮忙。将时钟显示为12小时制(hh:mm:ss AM / PM)。使用抽象 - 除了updateDisplay()方法之外不要更改任何内容。时钟可以使用“幕后”的军事时间;它只需要在调用getTime()时返回正确的字符串。
private void updateDisplay()
{
String AM = "AM";
String PM = "PM";
if(hours.getValue() == 0) {
hours.setValue(hours.getValue() + 12);
PM = "";
}
else if(hours.getValue() == 1 < hours.getValue() && hours.getValue() < 11) {
PM = "";
}
else if(hours.getValue() == 12) {
AM = "";
}
else if(hours.getValue() == 13 > 24) {
hours.setValue(hours.getValue() - 12);
AM = "";
}
displayString = hours.getDisplayValue() + ":" +
minutes.getDisplayValue() + ":" +
seconds.getDisplayValue() + PM + AM;
}
答案 0 :(得分:3)
H div 12
为0,则AM,否则为PM。然后12小时时钟h为H mod 12
,除非该值为0,在这种情况下h = 12。
您不应该更改显示代码中的值(hours.setValue(...)
),也不需要转换为秒。
我认为你的代码问题只是第一个条件语句中的语法问题。
... if(hours.getValue() == 1 < hours.getValue() ... // This is wrong
您将小时值与1进行比较,然后将比较结果与小时数进行比较。这不会在java中编译,因为bool与int无法比较。
注意:当我说div
时,我的意思是整数除法(即Java中的截断/
运算符),当我说mod
时,我的意思是整数模数({{1 Java中的运算符。)
更新: 有点像:
%
答案 1 :(得分:1)
一个很好的简洁公式,适用于添加11,然后取'模12',然后再添加一个:
hours.setValue(((hours.getValue()+11)%12)+1);
即
h_12 = ( (h_24+11) % 12 ) + 1
这可以为任何值提供所需的结果,包括小时= 0,小时= 12等
(然后当然使用前面提到的AM / PM显示的任何解决方案)
答案 2 :(得分:0)
尝试将24小时转换为秒,然后应该很容易......