0

SKT에서 공개 API로 "기념일 정보를 구성하는 명절 및 법정 공휴일, 국가기념일, 절기, 타국 유래 기념일, 사회/문화 환경에 따른 자연 발생 기념일, 대형 스포츠 이벤트, 비주기 국가 행사 등 다양한 형태의 기념일 정보를 확인" 할 수 있는 API를 제공하고 있습니다.


https://developers.sktelecom.com/content/tapi/EventDay/


이 API를 활용하면, 2015년 9월 28일 월요일은 빨간날이라는 것을 구해낼 수 있습니다.

아래는 PHP의 curl을 활용하여 간단하게 적용해본 API 함수입니다.



function CheckHoliday($date) {
	global $DB;
	
	$check = $DB->getRow('holiday',"where `date`='$date'"); // 제가 만든 DB클래스이오니, 적당히 디비에 저장후 가져오는 로직을 넣읍시다.
	if (isset($check['date']) == true) { // 디비에 있다면?
		return $check['holiday'] == 'T';
	} else { // 티비에 없다면,
		$time = strtotime($date);
		$ch = curl_init();
		curl_setopt($ch,CURLOPT_URL,'https://apis.sktelecom.com/v1/eventday/days?type=h&year='.date('Y',$time).'&month='.date('m',$time).'&day='.date('d',$time));
		curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);
		curl_setopt($ch,CURLOPT_SSLVERSION,3);
		curl_setopt($ch,CURLOPT_HEADER,0);
		curl_setopt($ch,CURLOPT_POST,0);
		curl_setopt($ch,CURLOPT_TIMEOUT,30);
		curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
		curl_setopt($ch,CURLOPT_HTTPHEADER,array(
			'TDCProjectKey: [발급받은 KEY를 입력하세요]',
			'Accept: application/json'
		));
		$result = curl_exec($ch);
		curl_close($ch);
		
		$data = json_decode($result);
		if ($data->totalResult == 1) { // 휴일이다!
			$DB->insert('holiday',array('date'=>$date,'holiday'=>'T','title'=>$data->results[0]->name));
			return true;
		} else { // 휴일이 아니다!
			$DB->insert('holiday',array('date'=>$date,'holiday'=>'F'));
			return false;
		}
	}
} 
 
if (CheckHoliday('2015-02-18') == true) echo '어머 휴일이네요~! 노세요~!';