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

PHP에서 기본 시간대 설정 없이 문자열로 유닉스 타임스탬프 구하는 방법

문자열에 담긴 날짜·시간 값은 그 자체로 특정 시간대의 정보를 가지고 있기 때문에, 대부분의 경우 기본 시간대(default timezone)를 별도로 설정할 필요가 없습니다. 다만 계산된 값을 화면에 출력할 때는 기준이 되는 시간대가 필요하므로, 상황에 맞게 명시적으로 지정해 주는 것이 좋습니다.

현재 설정된 기본 시간대 확인하기

PHP에서 현재 적용 중인 기본 시간대는 date_default_timezone_get() 함수로 간단히 확인할 수 있습니다.

echo date_default_timezone_get();

출력 결과

UTC

별도의 설정이 없다면 PHP는 기본적으로 UTC(협정 세계시)를 기준 시간대로 사용합니다.

문자열에 시간대를 직접 지정하는 방법

날짜 문자열 안에 시간대 식별자를 함께 포함하면, 해당 시간대를 기준으로 타임스탬프가 계산되어 내부적으로 변환됩니다.

echo date("Y-m-d H:i:s", strtotime("1/1/2020 00:00:00 America/Los_Angeles"));

출력 결과

2020-01-01 08:00:00

입력된 날짜는 미국 로스앤젤레스(태평양 표준시, PST = UTC-8) 기준의 자정입니다. 이를 UTC로 환산하면 같은 날 오전 8시가 되므로, 기본 시간대인 UTC를 기준으로 2020년 1월 1일 08:00:00이 출력됩니다.

시간대를 지정하지 않은 경우

반면 문자열에 시간대 정보가 없다면, PHP는 현재 설정된 기본 시간대를 그대로 사용하여 해석합니다.

echo date("Y-m-d H:i:s", strtotime("1/1/2020 00:00:00"));

출력 결과

2020-01-01 00:00:00

시간대 정보가 없는 문자열은 기본 시간대(UTC)를 기준으로 처리되기 때문에, 입력값과 동일한 결과가 그대로 반환됩니다. 이처럼 strtotime()date() 함수를 활용하면 시간대 설정 여부와 관계없이 원하는 형식의 타임스탬프를 손쉽게 다룰 수 있습니다.