我想在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
答案 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);