PHP 날짜 함수 사용하기(정리) - DATE, STRTOTIME, MKTIME

솔루션 구매 및 의뢰 문의
010-7262-9288
mrkjm@nate.com
PHP 팁

PHP 날짜 함수 사용하기(정리) - DATE, STRTOTIME, MKTIME

머니버그 0 602

PHP 에서 날짜를 다루는데는 주로 date(), strtotime(), mktime() 의 세가지 함수를 사용 합니다.

각각의 사용법과 몇가지 응용에 대해서 알아보도록 하겠습니다.

 

1. date() 함수.

 

string date ( string $format [, int $timestamp ] )

 

정수형으로 주어지는 timestamp나, timestamp가 주어지지 않았을 경우에는 현재 로컬 시간을 사용하여, 주어진 포맷 문자열에 따라 형식화한 문자열을 반환합니다.

즉 timestamp는 선택적이고, 기본값은 time()의 값입니다. 지원되지 않는 포맷 문자는 그대로 출력됩니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<?php
$toDay = date('Ymd'); //오늘
$yesterDay = $toDay -1// 어제
 
date("Y-m-d H:i:s"); //24시간으로 출력
date("Y-m-d h:i:s"); // 12시간으로 출력
date("Ymd"); //날짜까지만 출력
date("h:i:s"); // 시간만 출력
 
date("Y-m-d H:i:s",time()); //timestamp 형식으로 날짜/ 시간의 형태로 출력
 
date("Y-m-d",strtotime ("+1500 minutes")); // 1500분을 추가한 형태
date("Y-m-d H:i:s", strtotime("-1 day")); // 어제
date("Y-m-d H:i:s", strtotime("now")); // 현재
date("Y-m-d H:i:s", strtotime("+1 day")); // 내일
date("Y-m-d H:i:s", strtotime("-1 week")); // 일주일 전
date("Y-m-d H:i:s", strtotime("+1 week")); // 일주일 후
date("Y-m-d H:i:s", strtotime("-1 month")); // 한달 전
date("Y-m-d H:i:s", strtotime("+1 month")); // 다음달
date("Y-m-d H:i:s", strtotime("+1 week 2 days 3 hours 4 seconds")); // 1주 2일 3시간 4초 후
date("Y-m-d H:i:s", strtotime("next Thursday")); // 다음주 목요일
date("Y-m-d H:i:s", strtotime("last Monday")); // 지난 월요일
date("Y-m-d H:i:s", strtotime("19 December 2016")); // 2016년 12월 19일
 
//날짜 입력시 사용가능 특수문자는 -와 없는 형태 두가지만 가능
date("Ymd",strtotime ("-1 days", strtotime('20070819'))); //특정날짜에서 하루 빼기
date("Ymd",strtotime ("+1 days", strtotime('2007-08-19')));//특정날짜에서 하루 빼기
date( "Y-m-d\TH:i:s", strtotime('20070101040404') ); //timestamp의 형태 정상적으로 처리안됨 
date( "Y-m-d\TH:i:s", strtotime('2007-01-01 04:04:04') ); //정상적으로 처리됨(제너센스 rss에서 사용) 
 
//문자형 날짜와 문자형 날짜 사이의 일수 구하기
 
// 문자형 날짜를 초로 계산하여 뺀다음에 일자로 변환해줌( 가장 정확함) 
echo (strtotime('20070803'- strtotime('20070801'))/60/60/24;
 
//오늘 날짜부터 지정한 일수(day)후의 날짜로 timestamp형식으로 출력하기 
function plus_day($day) { 
    return mktime(0,0,0,date("m"),date("d")+$day,date("Y")); 
}
 
//한줄로 오늘 날짜 시간 뽑아오기 
list($y,$m,$d,$h,$i,$s= explode(" ",date("Y m d h i s"));
 
$dateString = date("Y-m-d"time());
echo $dateString;
?>
cs

 

결과)

2017-01-10

 

 

2. strtotime() 함수.

 

int strtotime ( string $time [, int $now = time() ] )

 

주어진 날짜 형식의 문자열을 1970년 1월 1일 0시 부서 시작하는 유닉스 타임스탬프로 변환합니다.

두번째 인자가 주어지면 주어진 타임스탬프를 기준으로 계산되어 집니다.

날짜가 주어지지 않고 변화량만 주어지면 로컬 타임이 사용됩니다. +1 day, +1 week 등이 사용될 수 있고, 음수값도 사용됩니다.

 

1
2
3
4
5
6
7
<?php
$timestamp = strtotime("+1 week");
echo date("Y-m-d"$timestamp), "<br/>";
$timestamp = strtotime("2016-12-01 +1 week");
echo date("Y-m-d"$timestamp), "<br/>";
?>
 
cs

 

결과)

2017-01-17

2016-12-08

 

 

3. mktime() 함수.

 

int mktime ([ int $hour = date("H") [, int $minute = date("i") [, int $second = date("s") [, int $month = date("n") [, int $day = date("j") [, int $year = date("Y") [, int $is_dst = -1 ]]]]]]] )

 

인자로 주어진 값(시,분,초,월,일,년)에 대응하는 타임스탬프를 반환합니다.

 

1
2
3
4
<?php
$timestamp = mktime(000112017);
echo date('Y-m-d'$timestamp);
?>
cs

 

결과)

2017-01-01

 

 

4. 사용 예제 입니다.

 

- 특정월의 마지막 날짜를 구하는 방법입니다.

 

방법은 date함수의 포맷문자열 't'를 사용합니다. 't'는 주어진 월의 일수를 구하는 형식 문자 입니다.

 

$lastDay = date('t', strtotime("2017-01-01"));

 

타임스탬프는 mktime 으로 구할수도 있습니다.

 

$lastDay = date('t', mktime(0, 0, 0, 1, 1, 2017));

 

mktime함수의 인자는 순서대로 시간, 분, 초, 월, 일, 년도 입니다.

 

- 특정 날짜의 요일을 구하는 방법 입니다.

$day = "2017-01-10";

 

date 함수의 'w' 포맷 문자는 0부터 6까지의 숫자값을 반환합니다. 순서대로 일~토 를 나타냅니다.

 

$weekString = array("일", "월", "화", "수", "목", "금", "토");

echo($weekString[date('w', strtotime($day))]);

 

- 하루전 날짜를 구하는 방법 입니다.

 

$day = "2017-01-10"; 의 하루전 날짜인 "2017-01-09" 를 문자열로 구하려고 합니다.

 

$beforeDay = date("Y-m-d", strtotime($day." -1 day"));

 

날짜 뒤에 "+1 day", "+1 month", "+1 year", "+1 week" 등의 문자열을 붙여서 날짜를 계산할 수 있습니다.

 

 

 

5. date 함수에서 사용할 수있는 포맷문자열 입니다.

 

--- 일 ---

d : 일, 앞에 0이 붙는 2 숫자 [ 01에서 31 ]

D : 요일 글자 표현, 3 문자 [ Mon에서 Sun ]

j : 앞에 0이 붙지 않는 일 [ 1에서 31 ]

l : (소문자 '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 ]

 

--- 주 ---

W : ISO-8601 주차, 주는 월요일에 시작 (PHP 4.1.0에서 추가) [ 예시: 42 (그 해의 42번째 주) ]

 

---월 ---

F : January나 March 같은 월의 완전한 글자 표현 [ January에서 December ]

m : 0이 붙는 월 숫자 표현 [ 01에서 12 ]

M : 월의 축약 글자 표현, 3 문자 [ Jan에서 Dec ]

n : 0이 붙지 않는 월 숫자 표현 [ 1에서 12 ]

t : 주어진 월의 일 수 [ 28에서 31 ]

 

--- 연 ---

L : 윤년 여부 [ 윤년엔 1, 그 외엔 0 ]

o : ISO-8601 연도. Y와 같지만, ISO 주차(W)가 전해나 다음해에 해당하면, 그 연도를 사용합니다. (PHP 5.1.0에서 추가) [ 예시: 1999나 2003 ]

Y : 연도의 완전한 숫자 표현, 4 숫자 [ 예시: 1999나 2003 ]

y : 도의 두 숫자 표현 [ 예시: 99나 03 ]

 

--- 시간 ---

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 ]

 

--- 시간대 ---

e : 시간대 식별자 (PHP 5.1.0에서 추가) [ 예시: UTC, GMT, Atlantic/Azores ]

I : (대문자 i) 일광 절약 시간 여부 [ 일광 절약 시간이면 1, 아니면 0 ]

O : 그리니치 시간(GMT)과 시차 [ 예시: +0200 ]

P : 시와 분 사이에 콜론이 들어가는 그리니치 시간(GMT)과 차이 [ 예시: +02:00 ]

T : 시간대 축약어 [ 예시: EST, MDT ... ]

Z : 시간대 오프셋 초. 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 : 유닉스 에포치(January 1 1970 00:00:00 GMT)부터 초수 [ time() 참조 ]

0 Comments
TIP
글이 없습니다.
010.7262.9288
월-금 : 10:00 ~ 22:00, 토/일/공휴일 휴무
브레이크타임 : 16:30 ~ 19:00

Bank Info

국민은행 078501-04-057514
예금주 강준모
State
  • 현재 접속자 2 명
  • 오늘 방문자 34 명
  • 어제 방문자 32 명
  • 최대 방문자 2,476 명
  • 전체 방문자 51,056 명
  • 전체 게시물 102 개
  • 전체 댓글수 0 개
  • 전체 회원수 9 명