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

PHP gmmktime() 함수 완벽 가이드: GMT 기준 유닉스 타임스탬프 생성하기

PHP의 gmmktime() 함수는 GMT(그리니치 표준시) 날짜에 해당하는 유닉스 타임스탬프(Unix Timestamp)를 반환하는 함수입니다. 지역 시간대가 아닌 GMT 기준으로 시각을 다뤄야 할 때 유용하게 사용됩니다.

문법 (Syntax)

gmmktime(hour, minute, second, month, day, year, is_dst);

매개변수 (Parameters)

  • hour — 시(時)를 지정합니다. (0~23)

  • minute — 분을 지정합니다. (0~59)

  • second — 초를 지정합니다. (0~59)

  • month — 월을 지정합니다. (1~12)

  • day — 일을 지정합니다. (1~31)

  • year — 연도를 지정합니다. (4자리 연도 권장)

  • is_dst — 서머타임(DST) 여부를 나타내는 매개변수입니다. 다만 gmmktime()은 항상 GMT 날짜를 기준으로 동작하기 때문에 이 값은 결과에 영향을 주지 않습니다.

반환값 (Return)

gmmktime() 함수는 지정된 GMT 날짜와 시간에 해당하는 정수형(integer) 유닉스 타임스탬프를 반환합니다. 유닉스 타임스탬프란 1970년 1월 1일 00:00:00 UTC부터 경과한 초(second) 수를 의미합니다.

예제 1: 특정 GMT 날짜의 타임스탬프 구하기

다음 예제는 2017년 9월 10일 자정(GMT 기준)에 대한 유닉스 타임스탬프를 구하는 코드입니다.

<?php
    $time = gmmktime(0, 0, 0, 9, 10, 2017);
    print($time . "\n");
?>

출력 결과

1505001600

예제 2: date() 함수와 함께 활용하기

gmmktime()으로 생성한 타임스탬프는 date() 함수와 조합하면 다양한 형식으로 활용할 수 있습니다. 아래 예제에서는 2017년 11월 10일이 무슨 요일인지 확인해 봅니다.

<?php
    echo "Nov 10, 2017 was on a " . date("l", gmmktime(0, 0, 0, 11, 10, 2017));
?>

출력 결과

Nov 10, 2017 was on a Friday

참고 사항

gmmktime()은 로컬 시간대를 기준으로 타임스탬프를 만들어주는 mktime()과 거의 동일하게 작동하지만, 전달된 인수를 GMT 날짜로 해석한다는 점이 다릅니다. 따라서 서버의 시간대 설정(timezone)에 영향을 받지 않고 일관된 결과를 얻고 싶다면 gmmktime()을 사용하는 것이 좋습니다. PHP 5.1.0 이후에는 모든 매개변수 선택적으로 생략할 수 있으며, 생략된 값은 현재 GMT 날짜 및 시간으로 대체됩니다.