Zap Cal 라이브러리는 iCalendar 파일을 읽고 쓰기 위한 오픈 소스 PHP 라이브러리입니다. 이 라이브러리는 Zap Calendar 프로그램, Joomla CMS용 오픈 소스 응용 프로그램 및 최근에는 웹사이트에서 iCalendar 유효성 검사기 프로젝트를 지원하기 위해 10년 넘게 개발되었습니다. 이제 PHP 개발자를 위한 독립 실행형 라이브러리로 사용할 수 있습니다.

Zap Calendar iCalendar 라이브러리는 iCalendar(RFC 5545) 표준을 지원하기 위한 PHP 라이브러리입니다. iCalendar 파일을 읽고 쓰는 몇 가지 예가 라이브러리에 포함되어 있습니다.

이 PHP 라이브러리는 iCalendar 형식의 피드 및 파일을 읽고 쓰기 위한 것입니다. 라이브러리의 기능은 다음과 같습니다.

  • iCalendar 파일에 대한 읽기 및 쓰기 지원
  • iCalendar 파일의 객체 기반 생성 및 조작
  • 반복 날짜 목록으로 RRULE 확장 지원
  • iCalendar 파일에 시간대 정보 추가 지원

모든 iCalendar 데이터는 PHP 개체 트리에 저장됩니다. 이를 통해 특수 라이브러리 함수 호출 없이 모든 속성을 iCalendar 피드에 추가할 수 있습니다. 힘에는 책임이 따른다. 속성이 누락되거나 유효하지 않으면 결과로 생성되는 iCalendar 파일이 유효하지 않을 수 있습니다..

다음은 단일 이벤트 iCalendar 파일을 생성하는 PHP 프로그램의 예입니다.

$title = "(!LANG:간단한 이벤트"; // date/time is in SQL datetime format $event_start = "2020-01-01 12:00:00"; $event_end = "2020-01-01 13:00:00"; // create the ical object $icalobj = new ZCiCal(); // create the event within the ical object $eventobj = new ZCiCalNode("VEVENT", $icalobj->curnode); // add title $eventobj->addNode(new ZCiCalDataNode("SUMMARY:" . $title)); // add start date $eventobj->addNode(new ZCiCalDataNode("DTSTART:" . ZCiCal::fromSqlDateTime($event_start))); // add end date $eventobj->addNode(new ZCiCalDataNode("DTEND:" . ZCiCal::fromSqlDateTime($event_end))); // UID is a required item in VEVENT, create unique string for this event // Adding your domain to the end is a good way of creating uniqueness $uid = date("Y-m-d-H-i-s") . "@demo.. $uid)); // DTSTAMP is a required item in VEVENT $eventobj->addNode(new ZCiCalDataNode("DTSTAMP:" . ZCiCal::fromSqlDateTime())); // Add description $eventobj->addNode(new ZCiCalDataNode("Description:" . ZCiCal::formatContent("This is a simple event, using the Zap Calendar PHP library. " .."))); // write iCalendar feed to stdout echo $icalobj->export();!}

새해 전날에 매우 사소한 작업이 발생했습니다. 달력 사이트를 만드는 것은 매월 달력을 표시해야 하는 곳이었습니다. 문제 해결의 첫 번째 단계는 기성품 솔루션을 찾는 것이었습니다. 인터넷에 제공된 12가지 솔루션을 분류한 후 선택이 이루어졌습니다. 일부 버전은 전혀 작동하지 않는 것으로 밝혀졌고 일부는 너무 번거로웠습니다. 원하는 결과를 얻으려면 꽤 "톱질"해야 했습니다. 그럼 PHP에서 간단한 달력을 작성하는 방법을 살펴보겠습니다.

스크립트의 기초는 인터넷에서 찾았고 오류가 수정되었으며 무언가가 완료되었습니다. 특히 별도의 CSS 클래스로 휴무일을 강조 표시하는 기능이 추가되었습니다.

mySQL, jQuery 등을 사용하지 않고 순수 PHP에서 월간 달력 구현 아래에 주어진다:

"; // 요일 표시 $headings = array("Mon","Tue","Wed","Thurs","Fri","Sat","Sun"); $calendar.= " "; for($head_day = 0; $head_day<= 6; $head_day++) { $calendar.= ""; $calendar.= "

".$headings[$head_day]."
"; $calendar.= ""; ) $calendar.= ""; // 시작을 월요일로 설정 $running_day = date("w",mktime(0,0,0,$month,1,$year)); $running_day = $running_day - 1; if ($ running_day == -1) ( $running_day = 6; ) $days_in_month = date("t",mktime(0,0,0,$month,1,$year)), $day_counter = 0, $days_in_this_week = 1; $dates_array = array(); // 달력의 첫 번째 줄 $calendar.= " "; // ($x = 0; $x에 대한 빈 셀 표시< $running_day; $x++) { $calendar.= ""; $days_in_this_week++; ) // 숫자에 도달하면 첫 번째 줄에 숫자를 씁니다. for($list_day = 1; $list_day<= $days_in_month; $list_day++) { $calendar.= ""; // 셀에 숫자 쓰기 $calendar.= "
".$list_day."
"; $calendar.= ""; // 주의 마지막 날에 도달했습니다. if ($running_day == 6) ( // $calendar.= 줄을 닫습니다."; // 날짜가 월의 마지막 날이 아니면 다음 줄 시작 if (($day_counter + 1) != $days_in_month) ( $calendar.= " "; ) // 카운터 재설정 $running_day = -1; $days_in_this_week = 0; ) $days_in_this_week++; $running_day++; $day_counter++; ) // 지난 주의 끝에 빈 셀을 표시 if ($days_in_this_week< 8) { for($x = 1; $x <= (8 - $days_in_this_week); $x++) { $calendar.= " "; ) ) $calendar.= ""; $calendar.= ""; $calendar 반환; ) ?>

입력으로 draw_calendar 함수는 월과 연도의 서수를 받습니다. 함수 실행의 결과는 주어진 달의 달력의 html 코드입니다. 위의 기능을 사용하는 것은 어렵지 않으며, 웹 개발 초보자도 할 수 있습니다. 아래 예는 2016년 1월 달력을 표시합니다.

1월 "16

월과 연도의 이름을 포함하는 달력 캡션의 출력은 자유롭게 변경되고 완전히 제거될 수 있도록 의도적으로 함수에 포함되지 않았습니다.

1년 동안의 PHP 달력

위의 기능에서 1년 동안의 일정 PHP 스크립트를 쉽게 얻을 수 있습니다. 이렇게 하려면 루프의 모든 월을 살펴보고 각 월의 달력을 표시하는 함수를 호출하면 됩니다.

그러나 이 경우에는 php에서 영어로만 월 이름을 가져올 수 있으므로 러시아어로 된 월 이름 목록이 있는 배열을 만들어야 합니다.

이 경우 코드는 다음과 같습니다.

"1월", 1 => "2월", 2 => "3월", 3 => "4월", 4 => "5월", 5 => "6월", 6 => "7월", 7 => " 8월", 8 => "9월", 9 => "10월", 10 => "11월", 11 => "12월"); ($month = 1; $month<= 12; $month++) { ?>

"16

이 게시물의 예제는 github에서 다운로드할 수 있습니다.

2014년 9월 14일

JavaScript로 만든 컴포넌트를 사용할 수 없는 경우가 있습니다. 일반적으로 HTML 양식에서 날짜 선택을 자동화하는 기능이 아니라 과거 또는 계획된 이벤트를 미래의 날짜에 연결하는 기능이 필요한 경우입니다. 이는 특정 날짜의 뉴스 수, 온라인 상점에서 이루어진 주문 상품 또는 구매 수 등이 될 수 있습니다. 저것들. 이러한 경우 특정 날짜에 대한 특정 정보를 얻기 위해서는 달력과 데이터베이스 간의 연결이 필요함을 알 수 있습니다. 물론 JavaScript로 달력을 만들고 Ajax를 사용하여 특정 이벤트의 존재에 대한 데이터를 얻을 수는 있지만 실습에서 알 수 있듯이 이 솔루션은 최적이 아닙니다. 따라서 이 캘린더 컴포넌트는 PHP로 개발될 것입니다.

달력에 대한 스타일 설정은 파일에 포함되어 있습니다. 달력.css. 그리고 PHP 스크립트는 파일에 있습니다 달력 수업.

캘린더로 작업하려면 필요한 모듈에 다음 코드를 추가해야 합니다.

// require_once 모듈 포함 (dirname (__FILE__) . "/calendar.class.php"); // Unix 형식의 이벤트 날짜가 있는 배열 $Events = array(1409778000,1410210000,1410901200,1411592400); // $date = (isset($_REQUEST["date"]))인 경우 날짜 가져오기? $_REQUEST["날짜"] : "" ; // 캘린더 객체 생성 $calendar = new Calendar($date, $Events); // 달력 표시 echo $calendar->ShowCalendar();

필요에 따라 이 달력의 소스 코드를 수정할 수 있습니다. 캘린더 구성 요소를 다운로드할 수 있습니다.