RSS의 다양한 퍼블리싱날짜 변환 대처 (2008.06.12 update) 개발 이야기2008-06-10 02:18:09
조회수 : 1513
지금 현재 구현해서 사용하고 있는 RSS Reader그누보드사이트에 있는 소스를 수정하여 사용중에 있다. 

갱신도 자동으로 되게 로봇을 돌리고 있는데, 구글뉴스를 빼면서 다른 신문사이트를 추가하였다.

근데, 이상하게도 몇시간이 지나도 추가한 3개의 사이트중 하나만 잘 갱신되고 나머지 두개는 자동갱신되지 않고 있었다.

원인을 분석해 보니 RSS데이타(xml)에 있는 pubDate(퍼블리싱시간)이 문제가 있었다.

사실 RSS Reader의 버그라고 하기 보다는 RSS 규범을 지키지 않은채로 RSS를 제공하는 게 문제였다. 

글을 퍼블리싱하는 시간은 정해진 포맷을 따라야 하는데, 이를 따르지 않는 RSS가 있는 것이다.

일반적으로 아래와 같이 표시를 하는게 원칙인데

"Monday, 09  Jan 2008 23:42:31 +09:00"

연합뉴스의 경우 Jan의 표시를 숫자로 표시하고 있다.  

"Monday, 09 06 2008 23:39:02 +09:00"

MBC의 경우

"2008.04.17 09:32:33"

이런 식으로 표시를 하고 있다.

DevMaster의 경우는 아예 시간표시도 없다.


[ 2008.06.12일 추가한 내용입니다 ]

전자신문 또한 퍼블리싱 날짜가 골때린다.

"2008061214"

이런 식으로 되어 있다. 이런 쌍~

베타뉴스는 http://www.betanews.net/rss/betanews_all.php 에서는 아예 날짜가 없고 개별적인 RSS에서는 

"2008-06-12 19:26:27"

이런 식으로 되어 있다. 아주 가지가지한다. ㅋㅋ


이렇게 퍼블리싱날짜를 멋대로 표시를 하면 php함수인 strtotime로 시간변환이 되지 않는다. 모르긴 몰라도 RSS Reader 관련 회사의 프로그래머들은 골치가 아플 것이다. 편법을 써야 하니까 말이다.


일단, 나도 지금 알아낸 경우만 해결하도록 날짜 변환 함수를 하나 만들어서 해결했다. 

function neojzs_PubDate($pubdate)
{
 if(!$pubdate) return false;
 
  $result = strtotime($pubdate);
 if($result > 0)
 {
  return date('Y-m-d H:i:s', $result);
 }
 else
 {
  if(strlen($pubdate) == 19) // "2008.04.17 09:35:55";
  {
   $result = str_replace('.', '-', $pubdate);   
   return $result;
  }
  elseif(strlen($pubdate) == 10) // 2008.06.12 추가 코드 "2008061214";
  {
   $result = substr($pubdate, 0, 8);
   $result = strtotime($result);
   
   if($result > 0)
   {
    $result = date('Y-m-d', $result) . ' ' . substr($pubdate, -2) . ':00:00';
   }
   return $result;
  }
  else
  {
   $temp = explode(' ', $pubdate);
   if(date('M', $temp[2]))
   {
    $result = $temp[3].'-'.$temp[2].'-'.$temp[1].' '.$temp[4];
    return $result;
   }
  }
 }
 return false;
}



마우스패드, 클리어화일, 홀더, 부채제작, 카탈로그, 브로슈어, 포스터, 리플렛, 논문, 사보등 기획디자인 및 인쇄에 대해서
문의주시면 언제나 친절한 상담해드립니다
관련글 총 5개
RSS 제공안하는 사이트에서 RSS얻기 (2008.09.05 Update)
텍스트큐브 RSS를 R$$로 만들기
Smart Robot 을 만들어 보았다.
연합뉴스 왜 이러니!
그누보드 RSS스킨 만들기 (2)
오늘의글
jazonsim.com (1)
아랑전설의 시라누이 마이 코스프레
html5 관련정보
SourceMonitor - 소스 분석툴
맥 프로그래밍
jazonsim.com (1)
ART vs Dalvik
LG G Pro2
코인하트 (하트를 날려줘)
갤럭시노트3 vs 시크릿노트 필기감 비교 (1)
이름  비밀번호 
홈페이지
비밀댓글
 아이폰 3G가 드디어 발표되었답니다.
 안산 샛터공원에서