我在android中构建一个警报应用程序。但每当中午12点的时候。它会在12小时后自动设置闹钟。如果我在10:00设置闹钟,则将其设置为22:00。如果我在14:00设置闹钟,则在第二天的02:00设置闹钟。 只有当我的安卓时钟显示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个小时。
答案 0 :(得分:2)
您应该使用Calendar.HOUR_OF_DAY而不是Calendar.HOUR。您必须在一天中的12至24小时内面对此问题。 Calendar.HOUR用于12小时时钟系统,而Calender.HOUR_OF_DAY用于24小时时钟系统。
当12小时后新的Calendar对象实例被清除时,时间是在PM(12之后),你试图将Calender.HOUR设置为3,所以它下午3点,平均15小时。
答案 1 :(得分:0)
基于小时的直接计算来确定AM与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";
}