使用此代码我得到一个java.lang.IllegalArgumentException: DTSTART cannot be empty
。该错误来自:
代码:
Calendar calender = Calendar.getInstance();
ContentResolver cr = getContentResolver();
ContentValues values = new ContentValues();
String eventTime="12:00:AM 11:59:PM";
String[] time=eventTime.split(" ");
String[] execttime=time[0].split(":");
String eventStartDate="06 Feb 2014"+" " + execttime[0]+":"+execttime[1]+":00";
long startDate=getDateCurrentMillis(eventStartDate);
values.put(CalendarContract.Events.DTSTART,
startDate);
Uri EVENTS_URI = Uri.parse(getCalendarUriBase(EventDetail.this)+ "events");
public static long getDateCurrentMillis(String startDate) {
SimpleDateFormat sfd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss",
Locale.getDefault());
sfd.setTimeZone(TimeZone.getTimeZone("UTC"));
try {
Date d = sfd.parse(startDate);
return d.getTime();
} catch (Exception e) {
System.out.println("");
}
return 0;
}
该问题正在您的getDateCurrentMillis
方法中发生。是否由于中指定的格式不正确而无法解析日期SimpleDateFormat
,从而导致始终返回0。在DTSTART中传递0会使您的应用崩溃。
看来您的eventStartDate是这样的格式
String date = "06 Feb 2014 12:00:00";
因此,以这种方式制作您的SimpleDateFormat对象
SimpleDateFormat sfd = new SimpleDateFormat("dd MMM yyyy HH:mm:ss", Locale.getDefault());
让我知道我是否正确地观察了您的日期格式,如果在通过之前没有打印出来并在您的SimpleDateFormat
对象中或发表评论中进行相应的更改,我将进行必要的更改。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句