인터넷정보

PHP 에서 날짜 함수, 계산하기

알 수 없는 사용자 2007. 11. 19. 14:25
php 에서의 날짜관련함수 및 계산방법입니다.

출력.
mktime(시,분,초,월,일,년) 유닉스 타임(타임스탬프:1970년을기준으로부터 1초단위숫자)으로 값을 출력합니다.
타임스탬프를 날짜형식으로 볼수 있는 함수가 date 입니다.
http://man.phpschool.com/manual/kr/function.date.phpdate : 함수레퍼런스
date는 날짜가 들어가지 않으면 기본적으로 오늘을 뜻합니다.
date("Y-m-d") ==> 오늘 날짜
mktime 으로 얻은 값을 date 함수로 특정 형식으로 출력
date("Y-m-d", mktime(0, 0, 0, 12, 32, 1997)); ==> 1998-01-01

출력의 할때 편리한 점은 1월32일은 2월1 일로 나온다는 것입니다.
그럼 2005년 1월부터 100일 지난 날은 몇일일까요?
응용 date("Y-m-d", mktime(0, 0, 0, 0 , 1, 101, 2005)); ==> 2005년 04월 11일
(1월1일은 포함하면 안되겠죠? 그래서 하루 더 증가~)
출력의 기본입니다.

계산.
기본연산은 strtotime("각종연산") 으로 합니다.
타임스탬프를 리턴합니다.
이말은 date 형으로 출력할 수 있다는 말입니다. ^^
http://man.phpschool.com/manual/kr/function.strtotime.php" :strtotime 함수레퍼런스

strtotime 은 날짜가 들어가지 않으면 기본적으로 오늘을 뜻합니다.
그리고 이 함수 또한 일수가 넘어가면 다음달로 계산됩니다.
strtotime("+3 day") => 오늘에서 3일 후, 물론 달이 넘어가면 1일로 계산됨
이 함수를 개인적으로 좋아하는 이유가 mktime 을 사용할 필요가 없다는 점입니다.
(필요가 있을 경우를 찾아주세요. ㅡ_-+)

date("Y년 m월 d일 h:m:s",mktime(12,12,1,1,2,2005))
date("Y년 m월 d일 h:m:s",strtotime("2005-01-02 12:12:01"))

이 두 함수는 같은 2005년 01월 02일 12:01:01 을 나타냅니다.
물론 사용하기도 strtotime 이 훨씬 쉽습니다.

그럼 2005년 1월부터 100일 지난 날은 몇일인지 strtotime 을 이용해서 확인해봅시다.
응용 date("Y-m-d", strtotime("2005-01-01 +100 day")); ==> 2005년 04월 11일
위에서
+100 day 는 +2 month 나 +10 year 와 같이 특정 연산이 가능합니다.
그래서 더욱 멋지게 보입니다. ㅡ_-+

두날짜의 연산은 타임스탬프로 두날짜의 차이값을 얻어서 86400 (60초*60분*24시) 로 나누면 몇일인지 나옵니다.
intval((strtotime("2005-01-10")-strtotime("2005-01-02"))/86400)    =>    8

이만하면 PHP 에서 웬만한 날짜 계산을 하실 수 있습니다.




참고용.
PHP의 경우는 strtotime 함수로 해결
http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=38930

ASP의 경우는 DateAdd 함수를 이용한 방법
http://www.taeyo.pe.kr/lecture/2_beginner_hwang/4_2.htm

MySQL 은 [본문]과 내용에 대한 메뉴얼..
http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html

MsSQL 도 ASP와 마찬가지로 DateAdd 로 처리가능
http://msdn2.microsoft.com/en-us/library/aa258863(SQL.80).aspx
반응형