我被要求仅使用updateDisplay()方法更改此clockDisplay中小时的格式,小时显示可以很好地工作到小时:12:59PM,使用timeTick()方法达到1:00 PM,但是再次使用timeTick()之后,它将再次转到1:01 AM。我该如何解决这个问题?
ngOnInit() {
this.items = [
{ label: 'A', icon: 'fa fa-home', routerLink: ['/'] },
{ label: 'B', icon: 'fa fa-home', routerLink: ['/'] }]
}
答案 0 :(得分:0)
怎么了?当时间到下午1点时,您的updateDisplay
方法将小时显示的值设置回1。现在您的时钟显示对象又回到了原来的状态就是说,在凌晨1点,您无法区分这两次。
如何解决?我建议您引入一个实例变量(字段)来保存信息,无论我们处于上午还是下午。您可以使用布尔变量或引入带有两个常量的enum
,例如AM
和PM
。然后,您需要在timeTick
方法和setTime
方法中设置此变量。然后,使用此变量来决定是在AM
方法中显示字符串PM
还是updateDisplay
,将非常简单。
如果要求您不添加新字段,请执行以下操作:您需要将hours
显示中的小时数设为23,以便您跟踪自己是否在上午或下午的时间。因此,请不要在updateDisplay
中设置小时数。仅在生成的显示字符串中,将12而不是0以及1到11而不是13到23放置。
用于生产代码:在现实生活中,您不会使用像您这样的设计,而是会严重依赖标准库类来处理时间。可以在模型(当前时间)和表示形式(打印的字符串)之间更清楚地区分。因此,当前时间将保存在LocalTime
中:
private LocalTime time;
将时间提前1分钟:
time = time.plusMinutes(1);
要显示时间,您可以使用DateTimeFormatter
:
private static final DateTimeFormatter TIME_FORMATTER
= DateTimeFormatter.ofLocalizedTime(FormatStyle.SHORT);
以此方式创建显示字符串:
displayString = time.format(TIME_FORMATTER);
该代码未经测试,因此请谅解如果有错字。