// create a new calendar object instance $v->setProperty("method", "PUBLISH"); // required of some calendar software $v->setProperty("x-wr-calname", $tables[0]['stuname'] . "的课表 " . $tables[0]['year'] . '-' . $tables[0]['term']); // required of some calendar software $v->setProperty("X-WR-CALDESC", ""); // required of some calendar software $v->setProperty("X-WR-TIMEZONE", "Asia/Shanghai"); // required of some calendar software foreach ($t1 as $o) { $odata = array('name' => $o->name, 'credit' => $o->credit, 'tutor' => $o->tutor, 'schedule' => $o->schedule); if (count($o->schedule)) { foreach ($o->schedule as $os) { $startTimeTrans = array([], ['8', '00'], ['8', '50'], ['9', '50'], ['10', '40'], ['11', '30'], ['13', '20'], ['14', '10'], ['15', '10'], ['16', '00'], ['16', '50'], ['18', '30'], ['19', '20'], ['20', '10']); $endTimeTrans = array([], ['8', '45'], ['9', '35'], ['10', '35'], ['11', '25'], ['12', '15'], ['14', '05'], ['14', '55'], ['15', '55'], ['16', '45'], ['17', '35'], ['19', '15'], ['20', '05'], ['20', '55']); $dateArr = $school->getSchoolCalendar2Date($tables[0]['year'], $tables[0]['term'], $os->week[0], $os->day); $vevent = $v->newComponent("vevent"); // create an event calendar component $vevent->setProperty("dtstart", array("year" => $dateArr[0], "month" => $dateArr[1], "day" => $dateArr[2], "hour" => $startTimeTrans[$os->startTime][0], "min" => $startTimeTrans[$os->startTime][1], "sec" => 0)); $vevent->setProperty("dtend", array("year" => $dateArr[0], "month" => $dateArr[1], "day" => $dateArr[2], "hour" => $endTimeTrans[$os->startTime][0], "min" => $endTimeTrans[$os->startTime + $os->durationTime - 1][1], "sec" => 0)); $vevent->setProperty("LOCATION", $os->location); // property name - case independent $vevent->setProperty("summary", $o->name); $vevent->setProperty("description", $o->tutor); if (count($os->week) > 1) { // Set recurrence rule $endWeek = $os->week[count($os->week) - 1]; $iWeek = $os->week[0]; $weekdayTrans = array('', 'MO', 'TU', 'WE', 'TH', 'FR', 'SA', 'SU'); $vevent->setProperty("RRULE", array("FREQ" => "WEEKLY", "COUNT" => $endWeek - $iWeek + 1, "INTERVAL" => 1, "WKST" => $weekdayTrans[$os->day])); for (; $iWeek < $endWeek; $iWeek++) {