PHP 시간 관련 함수
date
시간에 관한 정보를 쉽게 가져올 수 있도록 도와주는 함수
형식
date(시간형식);
date(시간형식, 유닉스 타임 스탬프); //유닉스 타임 스탬프에 해당하는 날짜정보를 알 수 있다.
매개변수
아래 표에 정리된 매개변수를 date함수에 넣어주면 그에 맞는 값이 리턴된다. 대소문자를 구분하는 것에 유의해야 한다.
매개변수 | 설 명 | |
년도 | L | 윤년인지 여부를 표시 ex) 0 또는 1 |
Y | 년도를 4자로 표시 ex) 2010 | |
y | 년도를 2자로 표시 ex)10 | |
달 | F | 달을 영문으로 표시 ex) January |
m | 달을 숫자로 표시 ex) 01, 02, ..., 12 | |
M | 달을 영문3글자로 표시 ex) Jan | |
n | 달을 0없이 숫자로 표시 ex) 1, 2, ..., 12 | |
t | 몇일까지 있는 달인지를 표시 ex) 28, 30, 31 | |
날짜 | d | 날짜를 두 자리로 표시 ex) 01, 02, ..., 31 |
j | 날짜를 0없이 표시 ex) 1, 2, 3, ..., 31 | |
S | 날짜를 영어에서 서수를 나타내는 2글자로 된 접미사로 표시 ex) st, th, rd | |
z | 해당 년도의 몇 번째 날인지를 표시 ex) 0~365 | |
요일 | D | 요일을 세글자로 표시 ex) Fri |
l (소문자L) | 요일을 표시 ex) Friday | |
w | 요일을 숫자로 표시 ex) 0(일요일), 1(월요일), ..., 6(토요일) | |
시간 | h | 시간을 12시간 단위로 표시 ex) 01, 02, ..., 12 |
H | 시간을 24시간 단위로 표시 ex) 00, 01, ..., 23 | |
g | 시간을 12시간 단위로 0없이 표시 ex)1, 2, ..., 12 | |
G | 시간을 24시간 단위로 0없이 표시 ex) 0, 1, 2, ..., 24 | |
분 | i | 분을 표시 ex) 00, 01, ..., 59 |
초 | s | 초를 표시 ex) 00, 01, ..., 59 |
기타 | r | 몇 가지 정보를 종합하여 표시 ex) Fri, 5 Apr 2002 21:54:51 +0900 |
U | 기준 시점(GMT 1970년 1월 1일 00:00:00)으로부터 지난 시간을 초로 표시 | |
Z | 지역간의 시간 편차를 초단위로 표시 ex) -43200 ~ 43200 |
예제
- <?
-
$time = date("Y"); //년도 출력
-
$time1 = date("U"); //유닉스 타임스탬프 값 출력
-
$time2 = date("Y년 m월 d일 H시 i분 s초", 0); //1970년 01월 01일 09시 00분 00초 출력
- ?>
time
유닉스 타임 스탬프를 구하기위해 주로 이용하는 함수. date함수와 비슷한 함수이다.
형식
저장할변수 = time();
예제
- <?
-
$a = time();
-
echo $a;
- ?>
microtime
백만분의 1초까지 측정한 시간 값을 알려주는 함수
변수에 저장된 값은 "소수점 이하의 초" "자연수 형태의 초" 와 같은 형식을 가진다.
뒤에 나오는 자연수 형태의 초는 유닉스 타임 스탬프 값이 된다.
형식
저장할변수 = microtime();
예제
- <?
-
$a = microtime();
-
echo $a;
-
// 각각의 초를 배열에 저장
-
$time = explode(" ", microtime()); //" "을 구분자로 배열에 저장
-
echo "
-
microtime : $time[0] <br>
-
timestamp : $time[1]
";
- ?>
참고
간단하게 microtime구하는 방법
- <?
-
echo (double)microtime();
- ?>
mktime
주어진 시간을 기준으로 유닉스 타임 스탬프를 구하는 함수
형식
저장할변수 = mktime(시간, 분, 초, 달, 날짜, 년도);
예제
<?
$a = mktime(10, 52, 14, 4, 19, 2010); //2010년 4월 19일 10시 52분 14초의 유닉스 타임스탬프를 구한다.
echo $a;
?>
checkdate
지정된 날짜가 실제로 존재하는 날짜인지를 확인하고 그 결과를 빈 값(False) 또는 1(True)로 리턴해준다.
형식
저장할변수 = checkdate(달, 날짜, 년도);
예제
- <?
-
echo checkdate(10, 31, 2010); // 2010년 10월 31일이 존재하는지 확인
- ?>
기념일 계산하기
방법
- 현재의 시간 정보를 구한다. (유닉스 타임스탬프, 시간, 분, 초)
- 기념일의 유닉스 타임스탬프를 구한다.(2009년 11월 1일)
- 현재의 유닉스 타임스탬프와 기념일의 유닉스 타임 스탬프 차이를 구한다.
- 두 유닉스 타임 스탬프의 차를 날짜로 환산
예제1 : 2009년 11월 1일 부터 몇일이 지났는지 계산
- <?
-
//현재의 시간 정보를 구한다.
-
$timestamp_now = time(); //현재 유닉스 타임스탬프
-
$hour_now = date('H'); //현재 시간
-
$min_now = date('i'); //현재 분
-
$sec_now = date('s'); //현재 초
-
//기념일의 유닉스 타임 스탬프 구하기
-
$timestamp_annu = mktime($hour_now, $min_now, $sec_now, 11, 1, 2009);
-
//유닉스 타임 스탬프의 차이 구하기
-
$result = $timestamp_now - $timestamp_annu;
-
//결과를 날짜로 환산해서 출력
-
echo $result/86400; //24시간*60분*60초 = 86400초
- ?>
예제2 : 2010년 11월 1일까지 몇일이 남았는지 계산
- <?
-
//현재의 시간 정보를 구한다.
-
$timestamp_now = time(); //현재 유닉스 타임스탬프
-
$hour_now = date('H'); //현재 시간
-
$min_now = date('i'); //현재 분
-
$sec_now = date('s'); //현재 초
-
//기념일의 유닉스 타임 스탬프 구하기
-
$timestamp_annu = mktime($hour_now, $min_now, $sec_now, 11, 1, 2010);
-
//유닉스 타임 스탬프의 차이 구하기
-
$result = $timestamp_now - $timestamp_annu;
-
//결과를 날짜로 환산해서 출력
-
echo abs($result/86400); //24시간*60분*60초 = 86400초
- ?>
이 글은 스프링노트에서 작성되었습니다.