PHP언어 웹개발 서버관리 DB관련 모바일 Mac세상
WEB언어/PHP2019. 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시간 차이가 표시 됩니다.

 

 

방문시 위의 하트모양의 "♡ 공감"을 눌러주시면 감사하겠습니다.
(로그인하지 않으셔도 가능)
Posted by saltdoll

댓글을 달아 주세요