WEB언어/PHP

[php] Date Format 일자/날짜 포멧 변경하기 총정리 strtotime() , DateTime::createFromFormat()

saltdoll 2019. 10. 31. 15:00
반응형

php 프로그램을 하다 보면, 날짜 포맷을 변경은 너무도 많이 쓰이는 기능 중에 하나입니다.

각 나라마다 날짜의 표현 형식이 다릅니다.

 

미국은 "월/일/년도", 한국은 "년도. 월. 일." 형식을 많이 사용합니다.

요즘은 html5 속성인 date를 통해서 기본 일자 입력 폼을 지원함에

value값을 세계 표준형으로 변경해서 넘겨줘야 하는 일도 있습니다.

html5 type="date"을 사용한 예로 value값과 표시값이 다르게 표시됩니다.

<input type="date" value="2019-10-30"> 

표시: 10/30/2019 => 넘겨주는 값: 2019-10-30로 변경해서 주는 부분

 

특히, 미국의 경우 각 주(State)마다 시간이 다른 곳이 발생하면서,

시간 개념의 php 함수들을 많이 사용합니다.

지역별 LA시간, NewYork시간를 받아서 처리해야 할 때가 있습니다.

 

이런 Date에 대한 내용중에 가장 많이 사용하는 것들을 정리해 보려고 합니다.

 

 

 

1. 시간 포멧 바꾸기 (YYYY-MM-DD => MM-DD-YYYY)
2.
시간 포멧 바꾸기 (MM/DD/YYYY => YYYY-MM-DD)
3. 미래의 몇 시간/일 후에 날짜 가져오기 (+13시간 후의 날짜는 YYYY-MM-DD)
4. 시간대별 (Timezone) 장소의 시간 가져오기

자주 사용하는 PHP Date Format 함수들 이해

 

1. 시간 포멧 바꾸기 (YYYY-MM-DD => MM-DD-YYYY)

"년도-월-일 => 월-일-년도" 형태의 변경은 가장 많이 사용하는 포맷 변경입니다.

YYYY-MM-DD => MM-DD-YYYY
$origDate = "2019-01-15";
 
$newDate = date("m-d-Y", strtotime($origDate));
echo $newDate; // 01-15-2019

 

 

 

2. 시간 포멧 바꾸기 (MM/DD/YYYY => YYYY-MM-DD)

"//년도 => 년도-월-일"로 변경하기, 2가지 방법을 소개합니다.

MM/DD/YYYY => YYYY-MM-DD

(1) 첫번째 방법

$date = "10/30/2019";
$res = explode("/", $date);
$changedDate = $res[2]."-".$res[0]."-".$res[1];
echo $changedDate; // prints 2019-10-30

(2) 두번째 방법

$date = "10/28/2019";
$date = DateTime::createFromFormat("m/d/Y" , $date);
echo $date->format('Y-m-d'); // 2019-10-28

추가로, 일자를 "0D"형태의 2자리 숫자가 아니라, "D" 형태로 출격하기

MM/DD/YYYY => M/D/YYYY
$date = "04/09/2019";
$date = DateTime::createFromFormat("m/d/Y",$date);
echo $date->format('n/j/Y'); // 4/9/2019

유럽 스타일 "일/월/년도"를 "년도/월/일"로 바꾸기

DD/MM/YYYY => YYYY-MM-DD
$origDate = "15/01/2019";
 
$date = str_replace('/', '-', $origDate );
$newDate = date("Y-m-d", strtotime($date));
echo $newDate;

 

 

 

 

3. 미래의 몇 시간/일 후에 날짜 가져오기 (+13시간 후의 날짜는 YYYY-MM-DD)

어제의 날짜, 다음 달의 첫날과 마지막 날과 같은 특정 날짜가 필요할 때가 있습니다.

통계 리포트를 만들 때 너무도 많이 사용하는 기능이죠.

 

저의 경우 오전 11시(11 AM)부터 다음 날짜로 표시되어야 하는 항목이 있어서.

13시간 후에 날짜를 구하는 부분이 필요했습니다.

date_default_timezone_set('America/Los_Angeles');// 기준 시간 LA로 지정
$p_date = date("Y-m-d", strtotime('+13 hours')); // 11시부터 다음날로 처리

지난달의 첫날과 마지막 날 가져오기

$pre_month = strtotime('-1Months');  // 한달전
$p_sdate = date("m/01/Y",$pre_month);// Last month first day.
$p_edate = date("m/t/Y",$pre_month); // Last month last day.

특정 일자의 마지막날 구하기

$a_date = "2014-10-2"; 
echo date("Y-m-t", strtotime($a_date)); // 2014-10-31

그 외 특정 날짜 가져오기

("+1 day"), ("+1 week"), ("-1 year"), ("next Thursday"), ("last Monday")등 여러 가지 방식으로 사용이 가능합니다.

 

 

4) 장소의 시간대별 (Timezone) 시간 가져오기

LA와 NY의 시간대별로 시간을 가져오는 부분입니다.

date_default_timezone_set()를 이용한 시간 가져오기
date_default_timezone_set('America/Los_Angeles');
$time = date("Y-m-d H:i:s");
echo $time; // LA 시간

date_default_timezone_set('America/New_York');
$time = date("Y-m-d H:i:s");
echo $time; // NY 시간

결과 화면

LA와 NY의 3시간 차이가 표시 됩니다.

 

프로그램를 하다보면,

Data는 크게 3가지 타입으로 나눠집니다.

날짜타입, 문자타입, 숫자타입

"Date", "String", "Number"

각각의 언어에서 이 3가지 타입의 형태 변환과 원리와 함수(모듈)을 가지고 있다면,

반복적인 개발 업무에 시간을 더 절약할 수 있는 실력으로 거듭납니다.

 

오늘은 그중에 "Date"에 대한 부분을 다뤄보았습니다.

도움이 되셨길 바랍니다.

반응형
도움이 되셨다면 하트모양의 "♡ 공감"을 눌러주시면 큰 격려가 됩니다.
(로그인하지 않으셔도 가능)