본문 바로가기
테크노트/PHP

PHP 날짜 함수 사용하기

by 테크한스 2021. 12. 3.

개발자로 개발을 시작하면서 가장 먼저 마주치는 것중에 하나가

날짜 함수를 내 입맛대로 만들어가는 것입니다.

 

어떤 개발언어이든

제가 아는 날짜함수를 잘 사용하는 기본은

 

날짜파싱의 기본은 14자리이며 14자리에서 시작해서 14자리로 끝난다

입니다.

 

이것을 기반으로 PHP 사용법에 대해서 알아봅니다.

 

14자리를 기준으로 삼은 이유는 개발하면서 date 타입으로 파싱하기 시작하면

수많은 시간대와 수많은 종류의 서버시간, 디비서버시간에서 수많은 혼동과 삽질이 시작됩니다.

 

위에 언급했듯이 14자리로 시작하기 때문에

당연히 관련된 테이블 컬럼의 타입(type)은 date 형이 아닌 VARCHAR(14)로 시작됩니다.

 

위에서 저는 날짜 관련 컬럼을

reg_date 
varchar(14)

로 생성하였습니다.

 

여기서 사용되는 14자리를 PHP 날짜함수에 뽑아내는 것은 너무 쉬웠습니다. 그냥 한줄 

 

$tmp = date("Y-m-d H:i:s");   //  2021-12-02 23:40:03
$tmp2 = date("YmdHis");     // 20211202234003

제가 선호하는 2번 스따일대로 인서트하는데 감사히 사용하겠습니다. 꾸벅~

 

그러나 나중에 유지보수하면서 발생할 수 있는 다양한 날짜 관련된 정보들도 추가해 봅니다.

 

지금기준으로 한달 후는 몇일일까?

지금기준으로 저번 주 금요일은 몇일일까?

 

머 요런 느낌? 궁금함? 

 

PHP의 strtotime 함수가 마법처럼 해결해 줍니다.

여러분도 필요할 때 한번 써보세요

// ("+1 day"), ("+1 week"), ("-1 month"), ("-1 year")

$today = date("Y-m-d", strtotime('-1 month'));
$today = date("Y-m-d", strtotime('+1 month'));				
$today = date("Y-m-d", strtotime('-1 day'));
$today = date("Y-m-d", strtotime('+1 day'));				
$today = date("Y-m-d", strtotime('-1 week'));
$today = date("Y-m-d", strtotime('+1 week'));
$today = date("Y-m-d", strtotime('-1 year'));
$today = date("Y-m-d", strtotime('+1 year'));				
$today = date("Y-m-d", strtotime('next friday'));
$today = date("Y-m-d", strtotime('this friday'));				
$today = date("Y-m-d", strtotime('last Monday'));

 

자~ 이제 14자리로 디비에 값을 insert 한 후에 이 값을 select해서 가져와야 하는 경우 있겠죠?

이런경우는 디비에서 이런형태의 14자리 데이터를 받아서 PHP의 substr 내장함수를 이용합니다.

여기의 특징이라면 substr (어디서부터 ~ 어디까지) 를 명시해야 하는데 다른 언어와 달리 from~to 개념과는 유사하지만 다른 from~count 개념입니다. 즉 어디서부터 몇개까지냐? 입니다.

 

$reg_date = "20211203;
substr($reg_date,0,4)." ".substr($reg_date,4,2)." ".substr($reg_date,6,2);  // 2021 12 03

자바언어인 경우 

substring(0,4), substring(4,6), substring(6,8) 이렇게 자르는데 php에서 그렇게 자르다간 짤립니다. ㅎ

아니요 자리수가 잘못 짤린다고요 ㅎㅎ 그자리가 아니라요 ;;

댓글