날짜와 시간 관련 함수
날짜와 시간의 형식화
date() 함수는 전달받은 형식에 맞춰 날짜와 시간 정보를 문자열로 반환합니다.
date() 함수에 인수로 전달할 수 있는 날짜와 시간 표현의 형식은 다음과 같습니다.
형태 | 설명 | 예시 |
---|---|---|
d |
날짜를 두 자리 숫자로 표현함. | 00부터 31 |
D |
요일을 세 개의 문자로 표현함. | Mon에서 Sun |
j |
날짜를 숫자로 표현함. | 1부터 31 |
l(소문자 'L') | 요일을 완전한 문자열로 표현함. | Sunday부터 Saturday |
N | 요일을 ISO-8601 숫자로 표현함. (PHP 5.1.0에서 추가됨) | 1(월요일)부터 7(일요일) |
S | 날짜 뒤에 영어 서수를 붙임. | st, nd, rd, th, j |
w | 요일을 숫자로 표현함. | 0(일요일)부터 6(토요일) |
z | 일 년 중 몇 번째 날인지를 숫자로 표현함. | 0부터 365 |
W | 일 년 중 몇 번째 주인지를 숫자로 표현함. (PHP 4.1.0에서 추가됨) | 42(그 해의 42번째 주) |
F | 월을 완전한 문자열로 표현함. | January에서 December |
m | 월을 두 자리 숫자로 표현함. | 01부터 12 |
M | 월의 축약형을 세 개의 문자로 표현함. | Jan에서 Dec |
n | 월을 숫자로 표현함. | 1부터 12 |
t | 해당 월의 총일 수를 숫자로 표현함. | 28부터 31 |
L | 윤년 여부를 표현함. | 윤년엔 1, 그 외엔 0 |
o |
ISO-8601 연도값으로 Y값과 같은 값을 나타냄. 하지만, W값이 이전 해나 다음 해에 포함되면, 연도를 이 값으로 사용함. (PHP 5.1.0에서 추가됨) |
1999나 2003 |
Y | 연도를 완전한 네 자리 숫자로 표현함. | 1999나 2003 |
y | 연도를 두 자리 숫자로 표현함. | 99나 03 |
a | 오전과 오후의 소문자를 표현함. | am 또는 pm |
A | 오전과 오후의 대문자를 표현함. | AM 또는 PM |
B | 견본 인터넷 시간을 표현함. | 000에서 999 |
g | 12시간 형식으로 시간을 표현함. | 1부터 12 |
G | 24시간 형식으로 시간을 표현함. | 0부터 23 |
h | 12시간 형식 시간을 두 자리 숫자로 표현함. | 01부터 12 |
H | 24시간 형식 시간을 두 자리 숫자로 표현함. | 00부터 23 |
i | 분을 두 자리 숫자로 표현함. | 00부터 59 |
s | 초를 두 자리 숫자로 표현함. | 00부터 59 |
u | 초를 마이크로초로 표현함. (PHP 5.2.2에서 추가됨) | 54321 |
e | 시간대(timezone) 식별자를 표현함. (PHP 5.1.0에서 추가됨) | UTC, GMT |
I(대문자 i) | 서머타임 적용 여부를 표현함. | 서머타임이면 1, 아니면 0 |
O | 그리니치 시각(GMT)과 시차를 표현함. | +0200 |
P | 시와 분 사이에 콜론이 들어가는 그리니치 시각(GMT)과 시차를 표현함. | +02:00 |
T | 시간대(timezone)를 나타내는 축약어임. | EST, MDT |
Z |
시간대(timezone)를 나타내는 오프셋 초를 표현함. UTC 서쪽은 항상 음수, UTC 동쪽은 항상 양수로 표현됨. |
-43200부터 50400 |
c | ISO-8601 형식의 날짜를 표현함. (PHP 5에서 추가됨) | 2004-02-12T15:19:21+00:00 |
r | RFC 2822 형식의 날짜를 표현함. | Thu, 21 Dec 2000 16:01:07 +0200 |
U | 타임스탬프를 표현함. | time() 참조 |
타임스탬프란 GMT 기준 1970년 1월 1일 0시 0분부터 지금까지의 시간을 초(second) 단위로 나타낸 것입니다.
date() 함수에서는 두 번째 인수로 타임스탬프값을 전달하지 않아도 되며, 이때는 현재 날짜와 시간을 사용하게 됩니다.
타임스탬프(timestamp)
mktime() 함수는 시, 분, 초, 월, 일, 연도를 인수로 전달받아서, 해당 날짜와 시간을 나타내는 타임스탬프(timestamp)를 반환합니다.
time() 함수는 인수를 전달받지 않고, 현재 날짜와 시간에 대한 타임스탬프를 반환합니다.
예제
echo mktime(0, 0, 0, 1, 1, 2000)."<br>"; // 2000년 1월 1일을 나타내는 타임스탬프
echo mktime()."<br>"; // 현재 날짜와 시간을 나타내는 타임스탬프
echo time(); // 현재 날짜와 시간을 나타내는 타임스탬프
mktime() 함수는 호출할 때 인수를 시, 분, 초, 월, 일, 연도순으로 전달해야 하며, 오른쪽부터 차례대로 생략할 수 있습니다.
이 함수에 인수를 전달하지 않으면, 현재 날짜와 시간에 대한 타임스탬프 값을 반환하며, 따라서 time() 함수와 같은 동작을 하게 됩니다.
날짜와 시간 정보
getdate() 함수는 인수로 전달받은 타임스탬프에 해당하는 정보를 연관 배열의 형태로 반환합니다.
getdate() 함수가 반환하는 연관 배열의 키와 값은 다음과 같습니다.
키 | 값 |
---|---|
seconds |
해당 타임스탬프에 해당하는 초를 숫자로 저장함. |
minutes |
해당 타임스탬프에 해당하는 분을 숫자로 저장함. |
hours |
해당 타임스탬프에 해당하는 시간을 숫자로 저장함. |
mday | 해당 타임스탬프에 해당하는 일을 숫자로 저장함. |
wday | 해당 타임스탬프에 해당하는 요일을 숫자로 저장함. |
mon | 해당 타임스탬프에 해당하는 월을 숫자로 저장함. |
year | 해당 타임스탬프에 해당하는 연도를 네 자리의 숫자로 저장함. |
yday | 해당 타임스탬프에 해당하는 일자가 일 년 중 몇 번째 날인지를 숫자로 저장함. |
weekday | 해당 타임스탬프에 해당하는 요일을 완전한 문자열로 저장함. |
month | 해당 타임스탬프에 해당하는 월을 완전한 문자열로 저장함. |
0 | 타임스탬프값을 저장함. |
인수를 전달하지 않으면 현재 날짜와 시간의 타임스탬프를 반환합니다.
타임 존(Time zone)
date_default_timezone_set() 함수는 해당 스크립트에서 사용되는 날짜와 시간에 관련된 모든 함수에서 사용될 타임 존을 설정합니다.
date_default_timezone_get() 함수는 현재 설정되어 있는 타임 존을 반환합니다.
예제
echo date_default_timezone_get()." : ".date("h:i:s"); // 현재 타임 존과 시간을 받아옴.
date_default_timezone_set("America/Los_Angeles"); // 타임 존을 변경함.
echo date_default_timezone_get()." : ".date("h:i:s");
날짜의 유효성 검사
checkdate() 함수는 전달받은 날짜의 유효성을 검사합니다.
이 함수에 인수로 월, 일, 연도를 전달하면, 해당 날짜가 유효한 날짜인지를 확인해 줍니다.
이 함수는 윤년까지 고려하여 다음과 같은 사항들을 검사합니다.
1. 월이 1월부터 12월까지인지를 검사합니다.
2. 일자가 해당 월에 존재하는 날짜인지를 검사합니다.
3. 연도가 0에서 32767까지의 정수인지를 검사합니다.
만약 전달받은 날짜가 유효하다면 true를 반환하고, 유효하지 않다면 false를 반환합니다.
예제
var_dump(checkdate(1, 31, 2000)); // 유효한 날짜
var_dump(checkdate(2, 31, 2000)); // 유효하지 않은 날짜