PHP 내장함수-날짜와 시간관련

유영·2023년 3월 5일
0

PHP

목록 보기
43/57

1.날짜와 시간의 형식화

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
oISO-8601 연도값으로 Y값과 같은 값을 나타냄.1999나 2003
하지만, W값이 이전 해나 다음 해에 포함되면, 연도를 이 값으로 사용함.
(PHP 5.1.0에서 추가됨)
Y연도를 완전한 네 자리 숫자로 표현함.1999나 2003
y연도를 두 자리 숫자로 표현함.99나 03
a오전과 오후의 소문자를 표현함.am 또는 pm
A오전과 오후의 대문자를 표현함.AM 또는 PM
B견본 인터넷 시간을 표현함.000에서 999
g12시간 형식으로 시간을 표현함.1부터 12
G24시간 형식으로 시간을 표현함.0부터 23
h12시간 형식 시간을 두 자리 숫자로 표현함.01부터 12
H24시간 형식 시간을 두 자리 숫자로 표현함.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)를 나타내는 오프셋 초를 표현함.-43200부터 50400
UTC 서쪽은 항상 음수, UTC 동쪽은 항상 양수로 표현됨.
cISO-8601 형식의 날짜를 표현함. (PHP 5에서 추가됨)2004-02-12T15:19:21+00:00
rRFC 2822 형식의 날짜를 표현함.Thu, 21 Dec 2000 16:01:07 +0200
U타임스탬프를 표현함.time() 참조

타임스탬프란 GMT 기준 1970년 1월 1일 0시 0분부터 지금까지의 시간을 초(second) 단위로 나타낸 것입니다.

date() 함수에서는 두 번째 인수로 타임스탬프값을 전달하지 않아도 되며, 이때는 현재 날짜와 시간을 사용하게 됩니다.

echo date("Y/m/d h:i:s");

타임스탬프(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타임스탬프값을 저장함.

인수를 전달하지 않으면 현재 날짜와 시간의 타임스탬프를 반환합니다.

<?php
	$array = getdate();
	
	echo "키 : 값<br>";
	foreach ($array as $key => $value) {
	   echo $key." : ".$value."<br>";
	}
?>

//키 : 값
//seconds : 12
//minutes : 59
//hours : 12
//mday : 5
//wday : 0
//mon : 3
//year : 2023
//yday : 63
//weekday : Sunday
//month : March
//0 : 1678021152

타임 존(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");

이 두 함수는 PHP 5.1.0부터 추가된 함수입니다.


날짜의 유효성 검사

checkdate() 함수는 전달받은 날짜의 유효성을 검사합니다.
이 함수에 인수로 월, 일, 연도를 전달하면, 해당 날짜가 유효한 날짜인지를 확인해 줍니다.
이 함수는 윤년까지 고려하여 다음과 같은 사항들을 검사합니다.

  1. 월이 1월부터 12월까지인지를 검사합니다.

  2. 일자가 해당 월에 존재하는 날짜인지를 검사합니다.

  3. 연도가 0에서 32767까지의 정수인지를 검사합니다.

만약 전달받은 날짜가 유효하다면 true를 반환하고, 유효하지 않다면 false를 반환합니다.

<?php
	var_dump(checkdate(1, 31, 2000));	// 유효한 날짜
	echo "<br>";
	var_dump(checkdate(2, 31, 2000));	// 유효하지 않은 날짜
?>

	
//bool(true)
//bbool(false)

0개의 댓글