gpt4 book ai didi

android - calendar.set(Calendar.HOUR_OF_DAY, alarmHour);不管用。我究竟做错了什么?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:03:11 24 4
gpt4 key购买 nike

我正在设置一个闹钟,我从 TextView 获取小时和分钟,并通过 Spinner 获取 AM/PM。以下是我如何初始化 Calendar 对象:

Calendar calen = Calendar.getInstance();
calen.set(Calendar.HOUR_OF_DAY, alarmHour); //alarmHour from TextView
calen.set(Calendar.MINUTE, alarmMinute); //alarmMinute from TextView
calen.set(Calendar.SECOND, 0);
calen.set(Calendar.MILLISECOND, 0);

if(amorpm.equals("PM") //amorpm from Spinner
{
calen.set(Calendar.AM_PM, Calendar.PM);
}
else
{
calen.set(Calendar.AM_PM, Calendar.AM);
}

问题是此 Calendar 对象的 Hour 值有时是正确的,即用户在 TextView 中输入的值(并且它始终为 1 到 12)。但有时,该值等于当前小时。例如,如果当前时间是 11:30 pm,我将闹钟设置为 9:30 am,则 Hour 字段有值 11。一件奇怪的事情是,当我将 Calendar 对象的名称更改为其他名称时,例如 cal,它起作用了。但是以后就不行了。有什么问题吗?

感谢您的帮助!

最佳答案

我认为解决方案是调用 calen.set(Calendar.HOUR, alarmHour); 而不是 calen.set(Calendar.HOUR_OF_DAY, alarmHour);

问题在于您要设置 Calendar.HOUR_OF_DAY 字段,然后然后 设置 AM/PM 字段。 “一天中的小时”是全天 24 小时中的小时,因此将它与 AM/PM 结合使用没有意义。根据 Java 文档 ( http://docs.oracle.com/javase/7/docs/api/java/util/Calendar.html ),在设置时间时,如果出现冲突信息,则将根据以下组合使用最近设置的信息:

HOUR_OF_DAY

AM_PM + HOUR

因为您在小时后设置 AM/PM 字段,所以小时取自 Calendar.HOUR 字段,当然在您创建实例时将其初始化为当前小时。

变量的命名当然是转移注意力。这不可能影响它。

关于android - calendar.set(Calendar.HOUR_OF_DAY, alarmHour);不管用。我究竟做错了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12393925/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com