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

android–calendar.set(Calendar.HOUR_OF_DAY,alarmHour);不管用.我究竟做错了什么?,第1张

概述我正在设置一个警报,我从TextView和AM / PM通过Spinner获取小时和分钟.以下是我初始化Calendar对象的方法:Calendar calen = Calendar.getInstance(); calen.set(Calendar.HOUR_OF_DAY, alarmHour); //alarmHour from TextView cal

我正在设置一个警报,我从TextVIEw和AM / PM通过Spinner获取小时和分钟.以下是我初始化Calendar对象的方法:

Calendar calen = Calendar.getInstance();calen.set(Calendar.HOUR_OF_DAY,alarmHour); //alarmHour from TextVIEwcalen.set(Calendar.MINUTE,alarmMinute); //alarmMinute from TextVIEwcalen.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,并且我将警报设置为上午9:30,则“小时”字段的值为11.奇怪的是,当我将Calendar对象的名称更改为其他内容时,比如说,它有效.但是以后不会工作.可能有什么不对?

谢谢你的帮助!

最佳答案我认为解决方案是调用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);不管用.我究竟做错了什么?全部内容,希望文章能够帮你解决android – calendar.set(Calendar.HOUR_OF_DAY,alarmHour);不管用.我究竟做错了什么?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1139486.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存