Android在Alarm Manager中设置了特定的时间和日期

时间:2014-08-22 09:39:49

标签: java android alarmmanager

我想在AlarmManager中设置时间和日期。当我运行应用程序时,它打印一个不同的日期,但时间是正确的。为什么它会在log cat上显示不同的日期?

这是我的示例代码:

String strMinusDate ="22-08-2014";

String[] splitDate_Parts = strMinusDate.split("-");
saparated_Day = splitDate_Parts[0];
saparated_Month = splitDate_Parts[1];
saparated_Year = splitDate_Parts[2];

int convertDay = Integer.valueOf(saparated_Day);
int convertMonth = Integer.valueOf(saparated_Month);
int convertYear =  Integer.valueOf(saparated_Year); 

cal.set(convertYear, convertMonth, convertDay, 3 , 16);
Date dt=cal.getTime();
System.out.println("dt " + dt);

Intent intent = new Intent(context, AlarmManagerBroadcastReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(Xyz.this, 1, intent, 0);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), pendingIntent);

这是Logcat信息

08-22 15:04:35.252: I/System.out(811): dt Mon Sep 22 03:16:59 GMT+05:30 2014

1 个答案:

答案 0 :(得分:3)

Java中的月份是从零开始的,这意味着1月份为0.这使得9月22日技术上的结果正确,但不是您期望的结果。一个更简单的解决方案如下:

SimpleDateFormat df = new SimpleDataFormat("dd-MM-yyyy");
Date dt = df.parse("22-08-2014");
System.out.println("dt " + dt);