string date ( string $format [, int $timestamp ] ) (PHP 4, PHP 5)

포맷(format) 문자열에 다음 표의 값으로 대입할 경우 형식화된 현제의 로컬 시간을 반환받거나, 선택적인 timestamp에 대입하여 원하는 날짜나 시간을 얻을 수 있습니다. 즉, 선택적인 timestamp 인자가 주어지지 않았을 경우, 현재 시간을 기본값으로 가지는 유닉스 타임스탬프로 기본값은 time() 값을 갖습니다.

다음 표의 문자들을 format 인수 문자열로 인식합니다.

 포맷  의미  예시
 일 (Day)
 d 일, 앞에 0이 붙는 2 숫자 01 ~ 31(일)
 D 요일 글자 표현, 3 문자 Mon ~ Sun
 j 앞에 0이 붙지 않는 일 1 ~ 31(일)
 l 요일의 완전한 글자 표현 Sunday ~ Saturday
 N 요일의 ISO-8601 숫자 표현 (PHP 5.1.0에서 추가) 1(월요일) ~ 7(일요일)
 S 일 영어 접미사, 2 문자 st, nd, rd, th. J 형식
 w 요일 숫자 표현 0(일요일) ~ 6(토요일)
 z 해당 연도 일차 (0에서 시작) 0 ~ 365
 주 (week)
 W ISO-8601 주차, 주는 월요일에 시작 42; 그 해의 42번째 주
 
 월 (Month)
 F January나 March 같은 월의 완전한 글자 표현 January ~ December
 m 0이 붙는 월 숫자 표현 01 ~ 12
 M 월의 축약 글자 표현, 3 문자 Jan ~ Dec
 n 0이 붙지 않는 월 숫자 표현 1 ~ 12
 t 주어진 월의 일 수 28 ~ 31
 
 연 (Year)
 L 윤년 여부  윤년이면 1, 아니면 0
 o ISO-8601 연도. Y와 같지만, ISO 주차(W)가 전해나 다음해에 해당하면, 그 연도를 사용합니다. (PHP 5.1.0에서 추가)  1999나 2003
 Y 연도의 완전한 숫자 표현, 4 숫자  1999나 2003
 y 연도의 두 숫자 표현  99나 03
 시간 (Time)
 a 오전과 오후의 소문자 am 또는 pm
 A 오전과 오후의 대문자 AM 또는 PM
 B 스와치 인터넷 시간 000 ~ 999
 g 0이 붙지 않는 12시간 형식 시 1 ~ 12
 G 0이 붙지 않는 24시간 형식 시 0 ~ 23
 h 0이 붙는 12시간 형식 시 01 ~ 12
 H 0이 붙는 24시간 형식 시 00 ~ 23
 i 0이 붙는 분 00 ~ 59
 s 초, 0이 붙음 00 ~ 59
 u 마이크로초 (PHP 5.2.2에서 추가) 예시: 54321
 시간대 (Timezone)
 e 시간대 식별자 (PHP 5.1.0에서 추가) 예시: UTC, GMT, Atlantic/Azores
 I 일광 절약 시간 여부 일광 절약 시간이면 1, 아니면 0
 O 그리니치 시간(GMT)과 시차  +0200
 P 시와 분 사이에 콜론이 들어가는 시간(GMT)과 차이  +02:00
 T 시간대 축약어  EST, MDT ...
 Z 시간대 오프셋 초. UTC 서쪽은 항상 음수, UTC 동쪽은 항상 양수 -43200 ~ 50400
 날짜/시간 표현 (Full date/Time)
 c ISO 8601 날짜 (PHP 5에서 추가) 2004-02-12T15:19:21+00:00
 r » RFC 2822 형식 날짜
예시: Thu, 21 Dec 2000 16:01:07 +0200
 U January 1 1970 00:00:00 GMT 부터 초수 timestamp 형식

포맷문자열로 어떤 결과가 나오는지 아래 예제로 확인해 보겠습니다.

일(Day) 포맷형식

예제 (ex #1

 <?php
 
// 오늘은 2011년 5월 6일 금요일(Friday) 입니다.

 // 일, 앞에 0이 붙는 2 숫자
 
echo date('d'); 
// 결과: 06

 
echo "<br />"
;
 
// 요일 글자 표현, 3 문자 출력
 // Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday
 
echo date('D'); 
// 결과: Fri

 
echo "<br />"
;
 
// 앞에 0이 붙지 않는 일
 
echo date('j'); 
// 결과: 6

 
echo "<br />"
;
 
// 영문인 요일의 완전한 글자 표현
 // Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday
 
echo date('l'); 
// 결과: Friday

 
echo "<br />"
;
 
// 요일의 ISO-8601 숫자 표현 
 // 1->월, 2->화, 3->수, 4->목, 5->금, 6->토, 7->일
 
echo date('N'); 
// 결과: 5

 
echo "<br />"
;
 
// 요일 숫자 표현
 
echo date('w'); 
// 결과: 5

 
echo "<br />"
;
 
// 365일 중 오늘은 125일째입니다.
 
echo date('z'); 
// 결과: 125
 
?>

주(Week) 포맷형식

예제 (ex #2

 <?php
 
// 오늘은 2011년 5월 6일 금요일(Friday) 입니다.

 // 1월 부터 오늘까지 18주가 흘렀습니다.
 
echo date('W'); 
// 결과: 18
 
?>


월(Month) 포맷형식

예제 (ex #3

 <?php
 
// 1월->January, 2월->February, 3월->March, 4월->April, 5월->May, 6월->June
 // 7월->July, 8월->August, 9월->September, 10월->October, 11월->November, 12월->December
 // 오늘은 2011년 5월 6일 금요일(Friday) 입니다.

 // 월의 완전한 글자 표현
 
echo date('F'); 
// 결과: May

 
echo "<br />"
;
 
// 0이 붙는 월 숫자 표현
 
echo date('m'); 
// 결과: 05

 
echo "<br />"
;
 
// 월의 영문 첫 3문자
 
echo date('M'); 
// 결과: May

 
echo "<br />"
;
 
// 0이 붙지 않는 월 숫자 표현
 
echo date('n'); 
// 결과: 5

 
echo "<br />"
;
 
// 이 달 마지막 일 수, 5월은 31일까지임
 
echo date('t'); 
// 결과: 31
 
?>


년(Year) 포맷형식

예제 (ex #4

  <?php
 
// 오늘은 2011년 5월 6일 금요일(Friday) 입니다.

 // 윤년이면 1를, 아니면 0인 값
 
echo date('L'); 
// 결과: 0

 
echo "<br />"
;
 
// 연도의 완전한 숫자 표현, 4 숫자
 
echo date('Y'); 
// 결과: 2011

 
echo "<br />"
;
 
// 연도의 끝 두 숫자 표현
 // o 문자 포맷과 같음
 
echo date('y'); 
// 결과: 11
 
?>

시간(Time) 포맷형식

예제 (ex #5

 <?php
 
// 오늘은 2011년 5월 6일 금요일(Friday) PM 11시 입니다.

 
echo date('a'); 
// 결과: pm

 
echo "<br />"
;
 echo 
date('A'); 
// 결과: PM

 
echo "<br />"
;
 
// 시차없이 24시간을 1000개(비트)로 나눈 시간; 스위스기준: 자정은 '@0', 정오는 '@500' 비트시로 표시
 
echo date('B'); 
// 결과: 660

 
echo "<br />"
;
 
// 0이 붙지 않는 12시간 형식 시
 
echo date('g'); 
// 결과: 11

 
echo "<br />"
;
 
// 0이 붙지 않는 24시간 형식 시
 
echo date('G'); 
// 결과: 23

 
echo "<br />"
;
 
// 0이 붙는 12시간 형식 시
 
echo date('h'); 
// 결과: 11

 
echo "<br />"
;
 
// 0이 붙는 24시간 형식 시
 
echo date('H'); 
// 결과: 23

 
echo "<br />"
;
 
// 0이 붙는 분, 현제 시각 23시 50분 입니다.
 
echo date('i'); 
// 결과: 50

 
echo "<br />"

 
// 초, 0이 붙음, 현제 시각 23시 50분 1초 입니다.
 
echo date('s'); 
// 결과: 01

 
echo "<br />"
;
 
// 마이크로 초입니다.
 
echo date('u'); 
// 결과: 000000 
 
?>

시간대(Timezone) 포맷형식

예제 (ex #6

  <?php
 
echo date('e'); 
// 결과: Asia/Tokyo
 
?>

날짜/시간(Full date/Time) 포맷형식

예제 (ex #7
 <?php
 
// 형식: 요일. 일 월 년 시:분:초+GMT
 
echo date('r'); 
// 결과: Sat, 14 May 2011 00:04:52 +0900

 // 형식: 년-월-일 시:분:초+GMT
 
echo date('c'); 
// 결과: 2011-05-14T00:08:40+09:00

 // 1970년 1월 1일로부터 2011년 5월 14일까지 1305299536초가 경과된 시간
 
echo date('U'); 
// 결과: 1305299536
 
?>

포맷 문자열에 일반 문자를 넣거나 포맷 문자열을 역슬레쉬(\)로 일반 문자로 인식되게 할 수 도 있습니다.
다음 예제가 이해에 도움이 되리라 봅니다.

예제 (ex #10

 <?php
 
echo date("Y-m-d"); 
// 결과: 2011-05-14

 
echo "<br />"
;
 echo 
date('H:i:m'); 
// 결과: 00:22:05

 
echo "<br />"
;
 echo 
date('현제 시각은 H시 i분 m초',time()); 
// 결과: 현제 시각은 00시 22 분 05초

 
echo "<br />"
;
 echo 
date('오늘은 y년 m월 d일 입니다. \Y-\m'); 
// 결과: 오늘은 11년 05월 14일 입니다. \Y-\m
 
?>

timestamp

int time ( void ) (PHP 4, PHP 5)

timestamp와 datetime의 차이는 다음 표와 같습니다.

 timestamp 1970년 01월 01일 00:00:00 ~ 2037년 12월 31일 23:59:59 까지
 datetime 1000년 01월 01일 00:00:00 ~ 9999년 12월 31일 23:59:59 까지

이 함수는 1970년 1월 1일부터 현제까지 경과된 시간을 초로 반환받습니다.

예제 (ex #11
 <?php
 
// 오늘은 2011년 5월 14일 9시 52분
 
echo time(); 
// 결과: 1305334269

 // timestamp와 동일한 기능을 하며, PHP 5.1부터 사용가능합니다.
 
echo $_SERVER['REQUEST_TIME']; 
// 결과: 1305334269
 
?>

예제 (ex #12
 <?php
 
// 현제 2011년 5월 14일입니다.

 // 7일*24시간*60분*60초
 
$nextWeek time() + (24 60 60
);

 echo 
'오늘은    'date('Y-m-d') ."입니다.<br />\n"
;
 
// 결과: 오늘은 2011-05-14입니다.

 
echo '다음주는 'date('Y-m-d'$nextWeek) ."입니다.<br />\n"
;
 
// 결과: 다음주는 2011-05-21입니다.

 
echo '다음주는 'date('Y-m-d'strtotime('+1 week')) ."입니다.<br />\n"
;
 
// 결과: 다음주는 2011-05-21입니다.
 
?>

예제 (ex #13
 <?php
 
// 3일*24시간*60분*60초
 
$eventTime time() + (24 60 60
);

 if(
time() > $eventTime
){
      echo 
"이벤트 종료되었습니다."
;
 }else{
      echo 
"이벤트 진행중입니다."
;
 }
 
?>

블로그 이미지

하보니

하보니와 함께하는 phP 초보

댓글을 달아 주세요