Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

PHP에서 SQL 데이터베이스의 타임스탬프를 날짜 문자열로 변환하는 방법

SQL 데이터베이스에서 받아온 밀리초 단위의 타임스탬프를 사람이 읽을 수 있는 날짜 문자열로 변환하려면 PHP의 DateTime 클래스와 setTimestamp() 메서드를 활용하면 됩니다.

입력값 예시

예를 들어, 변환할 입력값이 다음과 같은 타임스탬프(밀리초 단위)라고 가정해 보겠습니다.

$SQLTimestamp = 1600320600000;

출력 목표

최종적으로 얻고자 하는 결과는 아래와 같은 형식의 날짜 문자열입니다.

2020-09-17 05:30:00

변환 절차

PHP의 DateTime::setTimestamp()는 초(second) 단위의 유닉스 타임스탬프를 기준으로 동작하기 때문에, 먼저 밀리초 단위의 SQL 타임스탬프를 1000으로 나누어 초 단위 값으로 변환해야 합니다.

$seconds = round($SQLTimestamp/1000, 0);

이렇게 구한 초 단위 값을 setTimestamp()에 전달한 뒤, format() 메서드로 원하는 형식의 문자열을 출력하면 됩니다.

전체 예제 코드

<!DOCTYPE html>
<html>
<body>
<?php
    // 밀리초 단위의 SQL 타임스탬프
    $SQLTimestamp = 1600320600000;

    // 밀리초를 초 단위로 변환
    $seconds = round($SQLTimestamp/1000, 0);

    // DateTime 객체 생성 후 타임스탬프 설정
    $PHPDateObject = new DateTime();
    $PHPDateObject->setTimestamp($seconds);

    // 원하는 형식으로 출력
    echo $PHPDateObject->format('Y-m-d H:i:s');
?>
</body>
</html>

실행 결과

2020-09-17 05:30:00

format() 형식 문자 설명

  • Y : 4자리 연도 (예: 2020)
  • m : 2자리 월 (01~12)
  • d : 2자리 일 (01~31)
  • H : 24시간제 시간 (00~23)
  • i : 분 (00~59)
  • s : 초 (00~59)

format()에 전달하는 형식 문자를 조합하면 '2020/09/17'처럼 슬래시 구분 형식이나 '2020년 9월 17일'과 같은 한글 표기 등 다양한 출력 형태를 자유롭게 만들 수 있습니다. 또한 서버의 기본 시간대가 아닌 특정 시간대를 적용하고 싶다면 DateTime 생성 시 두 번째 인자로 new DateTimeZone('Asia/Seoul')을 함께 전달하면 됩니다.