PHP Carbon 을 사용해서 Unix Timestamp 형식을 Date time 형식으로 변경하기


유닉스의 타임스탬프는 시간을 나타내는 형식중 하나로 POSIX 시간이나 Epoch 시간이라고도 부릅니다.


기준은 1970년 1월 1일 00:00:00 부터 경과 시간을 초 단위로 환산해서 정수로 나타내며 윤초는 무시됩니다


Database 에 이 시간을 기록할 경우 숫자 필드를 사용해서 저장하므로 사람이 읽을 수 있게 변환해 줘야 합니다.

기존의 32 Bit 운영 체제는 자릿수 제한때문에 2038년 1월 19일 이후 시간은 표시하지 못하는 문제가 있습니다.


날자/시간으로 변환하기

보통 언어별로 timestamp 를 날자/시간 형식으로 변경하는 기능을 제공하며 PHP 도 제공하지만 편리한 클래스인 Carbon 을 사용하는게 좋습니다.


$d = 1596521474;

$c = Carbon::createFromTimestamp($d);

// date: 2020-08-04 06:11:14.0 UTC (+00:00)
var_dump($c);


time stamp 가 13자리일때

가끔 타임스탬프가 13자리일 경우 micro second 까지 표시하려고해서 입니다. 이런 데이터는 그냥 변환하면 오류가 나므로 1,000 으로 나눠주면 됩니다.

$d = 1626234186461;

$c = Carbon::createFromTimestamp($d / 1000);

// date: 2021-07-14 03:43:06.461 UTC (+00:00),
var_dump($c);


또는 Carbon 이 제공하는 유틸리티 메서드인 createFromTimestampMs 를 사용해도 됩니다.

$d = 1626234186461;

$c = Carbon::createFromTimestampMs($d);

// date: 2021-07-14 03:43:06.461 UTC (+00:00),
var_dump($c);

같이 보기


Ref