i在Android中构建一个警报应用程序。但是每当中午12点是12时。它会在12小时后自动设置警报。就像我在10:00设置警报一样,然后将其设置为22:00。如果我在14:00设置警报,则将在第二天设置警报。仅当我的Android时钟说12.xx。
时,此错误才发生。我从按钮文本中花时间和日期。这是代码和日志。
Date today = c.getTime();
setAlarmTimeAndDate = Calendar.getInstance();
setAlarmTimeAndDate.set(Calendar.DATE, Integer.parseInt(saveDateButton.getText().toString().substring(0, 2)));
setAlarmTimeAndDate.set(Calendar.MONTH, Integer.parseInt(saveDateButton.getText().toString().substring(3, 5)) - 1);
setAlarmTimeAndDate.set(Calendar.YEAR, Integer.parseInt(saveDateButton.getText().toString().substring(6, 10)));
setAlarmTimeAndDate.set(Calendar.HOUR, Integer.parseInt(saveTimeButton.getText().toString().substring(0, 2)));
setAlarmTimeAndDate.set(Calendar.MINUTE, Integer.parseInt(saveTimeButton.getText().toString().substring(3, 5)));
Log.d("currentDateAndTime", c.getTime().toString());
Log.d("ButtonDateAndTime|alarm", saveDateButton.getText().toString()
+ "|" + saveTimeButton.getText().toString()
+ "|" +setAlarmTimeAndDate.getTime().toString());
日志:
03-12 02:31:39.814 6896-6896/com.codedweeb.notesandmemo D/currentDateAndTime: Sun Mar 12 02:31:28 GMT+05:30 2017
03-12 02:31:39.814 6896-6896/com.codedweeb.notesandmemo D/ButtonDateAndTime|alarm: 12/03/2017|03:30 AM|Sun Mar 12 03:30:39 GMT+05:30 2017
03-12 12:33:20.366 6896-6896/com.codedweeb.notesandmemo D/currentDateAndTime: Sun Mar 12 12:33:18 GMT+05:30 2017
03-12 12:33:20.366 6896-6896/com.codedweeb.notesandmemo D/ButtonDateAndTime|alarm: 12/03/2017|03:30 AM|Sun Mar 12 15:30:20 GMT+05:30 2017
我更改了手机的时间,然后将警报迟到12小时。
您应该使用calendar.hour_of_day而不是calendar.hour。您必须在一天中的12到24小时面临此问题。日历。hour用于12小时时钟系统,而calender.hour_of_day用于24小时时钟系统。
当日历对象的新实例在12小时后进行了雪茄的新实例时,时间是在PM(12之后)时,您尝试设置calender.hour为3,所以它使其在3 pm,平均15小时。
<。基于小时的直接计算,以确定am vs. pm并将时间返回文本字符串。这是代码:
timeString="";
int hour = Calendar.getInstance().get(Calendar.HOUR_OF_DAY);
if (hour == 0) {
timeString = "12AM (Midnight)";
} else if (hour < 12) {
timeString = hour +"AM";
} else if (hour == 12) {
timeString = "12PM (Noon)";
} else {
timeString = hour-12 +"PM";
}