[php] RSS나 ATOM의 날짜 UNIX timestamp으로 변환
로빈아빠
본문
RSS나 ATOM의 날짜 UNIX timestamp으로 변환
보통 RSS나 ATOM에 날짜(시간)는 다음과 같은 형식 입니다.
Tue, 29 Sep 2009 09:38:44 +0900
2009-09-29T09:38:44+09:00
이런 값들을 다른 형식으로 표현 하기위해서 많이 쓰는 기준값이 UNIX timestamp 입니다.
아래는 위와 같은 형식의 값을 UNIX timestamp 으로 변환해보는 함수를 간략하게 만든 것입니다.
보통 RSS나 ATOM에 날짜(시간)는 다음과 같은 형식 입니다.
Tue, 29 Sep 2009 09:38:44 +0900
2009-09-29T09:38:44+09:00
이런 값들을 다른 형식으로 표현 하기위해서 많이 쓰는 기준값이 UNIX timestamp 입니다.
아래는 위와 같은 형식의 값을 UNIX timestamp 으로 변환해보는 함수를 간략하게 만든 것입니다.
<?php echo "Timestamp : ".parse_rssdate("2009-09-29T09:38:44+09:00")."<br />"; echo "Date : ".date("Y-m-d H:i:s",parse_rssdate("2009-09-29T09:38:44+09:00"))."<br />"; function parse_rssdate ( $date_str ) { # regex to match wc3dtf $pat = "/(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2})(:(\d{2}))?(?:([-+])(\d{2}):?(\d{2})|(Z))?/"; if ( preg_match( $pat, $date_str, $match ) ) { list( $year, $month, $day, $hours, $minutes, $seconds) = array( $match[1], $match[2], $match[3], $match[4], $match[5], $match[6]); # calc epoch for current date assuming GMT $epoch = gmmktime( $hours, $minutes, $seconds, $month, $day, $year); $offset = 0; if ( $match[10] == 'Z' ) { # zulu time, aka GMT } else { list( $tz_mod, $tz_hour, $tz_min ) = array( $match[8], $match[9], $match[10]); # zero out the variables if ( ! $tz_hour ) { $tz_hour = 0; } if ( ! $tz_min ) { $tz_min = 0; } $offset_secs = (($tz_hour*60)+$tz_min)*60; # is timezone ahead of GMT? then subtract offset # if ( $tz_mod == '+' ) { $offset_secs = $offset_secs * -1; } $offset = $offset_secs; } $epoch = $epoch + $offset; } else { $epoch = strtotime($date_str); } return $epoch; } ?>
관련링크
댓글목록
등록된 댓글이 없습니다.