2018년 6월 19일 화요일

PHP에서 strtotime 함수와 date 함수를 이용한 타임스탬프 변환하기






PHP로 웹 프로그래밍시 "미팅 일시"를 기준으로 DB의 정보를 정렬해서 웹에 보여준다고 가정할때 어떤 식으로 처리하면 좋을까?
예를 들어 미팅 일시는 2018.6.19 15:30과 같은 시간이라고 가정해 보자. DB의 특정 필드에 이 값 그대로를 저장한다면 추후에 미팅 일시 필드를 기준으로 오름차순이나 내림 차순으로 정렬하기가 불편해 지게 된다.
이럴 경우에 '타임스탬프'를 이용하면 모든 것이 깔끔해진다.

타임스탬프란 1970년 1월 1일 0시 0분 0초를 기점으로 총 경과한 시간을 초 단위로 표현한 정수 값이다.
가령 2018.6.19 4:28분 정도의 시간이면(초는 귀찮으니 그냥 생략) 타임스탬프로 1529393299 정도의 값이 나올 것이다.

정리하면
 -. "미팅 일시"를 사람이 입력할때는 2018.6.19 15:30과 같은 형식으로 입력
 -. 2018.6.19 15:30의 시간을 DB에 저장할 때는 이에 해당하는 타임스탬프로 저장
 -. DB에 저장되어 있는 "미팅 일시" 필드의 타임스탬프를 기준으로 정렬 후 웹 페이지에 보여줄 때는 타임스탬프를 "년.월.일 시:분"과 같은 형태로 표시

결국은 이 과정을 위해서는 
타임스탬프 시간 ↔ 년.월.일 시:분
의 시간 형태로 상호 변환을 처리하는 과정이 필요하게 되어진다.

이를 위한 함수를 PHP에서는 제공해 주고 있다. 그 함수가
date()
strtotime() 두 함수이다.

년.월.일 시:분의 값을 타임스탬프로 변환해 보자. 
여기서 참고적으로 "1970.01.1 13:22"과 같은 형태는 strtotime() 함수가 인식하지 못하는 형태이다. 인식할수 있는 형태는
1970-01-01 13:22 혹은
1970/01/01 13:22과 같은 형태라야 한다.

$meetingTime = '1970-01-1 13:22';
echo "1970년 1월 1일 13:22을 타임스탬프 값으로 : ".strtotime($meetingTime)."<br/>";

1970년 1월 1일 13:22의 타임스탬프 값은 15720이다.
이번에는 타임스탬프의 값을 년.월.일 시:분의 형태로 변환해 보자.

$mTimeStamp = '15720';
echo "타임스탬프의 값을 한국형 시간형태로 변환 : ".date('Y.m.d H:i', $mTimeStamp)."<br/>";


댓글 없음:

댓글 쓰기