php 프로그램을 하다 보면, 날짜 포맷을 변경은 너무도 많이 쓰이는 기능 중에 하나입니다.
각 나라마다 날짜의 표현 형식이 다릅니다.
미국은 "월/일/년도", 한국은 "년도. 월. 일." 형식을 많이 사용합니다.
요즘은 html5 속성인 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) 장소의 시간 가져오기
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 시간
결과 화면
프로그램를 하다보면,
Data는 크게 3가지 타입으로 나눠집니다.
날짜타입, 문자타입, 숫자타입
"Date", "String", "Number"
각각의 언어에서 이 3가지 타입의 형태 변환과 원리와 함수(모듈)을 가지고 있다면,
반복적인 개발 업무에 시간을 더 절약할 수 있는 실력으로 거듭납니다.
오늘은 그중에 "Date"에 대한 부분을 다뤄보았습니다.
도움이 되셨길 바랍니다.
'WEB언어 > PHP' 카테고리의 다른 글
[PHP] 소수점 이하 2 자리까지 표시하기 (예: $ 1.10 ) (0) | 2019.10.23 |
---|---|
PhpStome UI 다크모드 사용하기 (JetBrain제품들 다 지원- Darcula) (0) | 2019.10.10 |
IIS + PHP에서 알수 없는 500번 오류 (0) | 2019.10.05 |
[PHP] break / return / exit 차이점 (2) | 2019.07.31 |
[PHP] 하나 은행 환율 API를 통한 JSON (14) | 2018.12.06 |
PHP7에서 mysql_connect 를 mysqli_connect 로 사용 (0) | 2018.12.05 |
PHP 현재 자신의 파일명 가져오기 basename($_SERVER['PHP_SELF']); (0) | 2018.05.15 |
php 이미지 자르기(crop) 만들기 (0) | 2018.05.09 |
(로그인하지 않으셔도 가능)