Я пытаюсь создать программу, которая получает классы пользователей для школы и автоматически создает для них события календаря на весь семестр.Но когда я запускаю программу, происходит несколько странных вещей.Во-первых, он всегда начинается 6 августа, хотя я указываю 20. Он также не помещает события в правильный день, который я указал, почти до месяца спустя!У меня есть фотография моих классов, которые я использовал.программа берет массив из первой строки, а затем помещает его в календарь.Потом достанется второй ряд и так далее и тому подобное.Таким образом, массив «Информация» никогда не содержит более 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
Вот несколько фотографий того, что делает мой календарь.Здесь он начинается 6 августа и имеет только один урок в этот день: Calendar_Image1
Вот еще одна картина, которая показывает, что мой календарь становится более «правильным», как я его назвал месяцпродолжается: Calendar_Image2
И, наконец, вот фотография моего календаря спустя более чем месяц после начала события с правильной разметкой (ПРИМЕЧАНИЕ: время по какой-либо причине не является правильнымно я сначала пытаюсь решить эту проблему): Calendar_Image3