我正在尝试创建一个程序,该程序可以为用户上学,并为他们整个学期自动创建日历事件。但是,当我运行该程序时,会发生一些奇怪的事情。首先,即使我指定了20,它也总是从8月6日开始。它也不会在我指定的正确日期之前放置事件,直到将近一个月之后!我有我所用课程的图片。程序将第一行的数组放入日历中。然后获取第二行,依此类推。因此,数组“信息”一次最多可以容纳9个以上的项目。
public void makeCalendar(ArrayList<String> info)
{
String hourOfDay = info.get(3);
String hourDay = "";
String minuteOfDay = "";
if(hourOfDay.length() > 3)
{
hourDay = hourOfDay.substring(0,2);
minuteOfDay = hourOfDay.substring(2,hourOfDay.length());
}
else
{
hourDay = hourOfDay.substring(0,1);
minuteOfDay = hourOfDay.substring(1, hourOfDay.length());
}
int hour = Integer.parseInt(hourOfDay);
int minute = Integer.parseInt(minuteOfDay);
String byDay = getDaysFormat(info.get(6));
System.out.println("\n" + byDay + "\n");
TimeZone timeZone = TimeZone.getTimeZone("America/Chicago");
Calendar beginTime = Calendar.getInstance(timeZone);
System.out.println(calendar.get(Calendar.DATE));
if(calendar.get(Calendar.MONTH) >= 8)
{
beginTime.set(calendar.get(Calendar.YEAR), Calendar.JULY, 20, hour, minute);
}
else
{
beginTime.set(calendar.get(Calendar.YEAR), 1, 5, hour, minute);
}
long sinMILI = beginTime.getTimeInMillis();
values.put(CalendarContract.Events.CALENDAR_ID, 3);
values.put(CalendarContract.Events.DTSTART, sinMILI);
values.put(CalendarContract.Events.TITLE, info.get(0));
values.put(CalendarContract.Events.DESCRIPTION, "You have class at " + info.get(7) + " room " + info.get(8) + "!");
values.put(CalendarContract.Events.EVENT_TIMEZONE, timeZone.getID());
values.put(CalendarContract.Events.DURATION, "+P1H");
values.put(CalendarContract.Events.RRULE, "FREQ=WEEKLY;BYDAY=" + byDay + ";UNTIL=20181207T000000Z");
values.put(CalendarContract.Events.HAS_ALARM, 1);
values.put(CalendarContract.Events.ALL_DAY, false);
String uString = "content://com.android.calendar/events";
uri = cr.insert(Uri.parse(uString), values);
}
以下是课程时间表的图片:Schedule_Picture
以下是我的日历也正在做的几张照片。从8月6日开始,到那天只有一堂课:Calendar_Image1
这是另一张图片,显示我的日历随着月份的进行而变得更加“正确”:Calendar_Image2
最后,这是活动以正确的布局开始后一个多月后我的日历照片(注意:由于某种原因,时间也不正确,但我首先尝试处理此问题):{{ 3}}