💻 자주 쓰는 PHP 함수

[PHP 함수] strtotime() 함수로 날짜를 타임스탬프로 변환

rhandy 2025. 3. 29. 11:57
728x90

PHP에서 날짜와 시간을 다룰 때, 특정 날짜를 Unix 타임스탬프(초 단위 시간)로 변환해야 하는 경우가 많습니다.
예를 들어, 날짜를 비교하거나, 일정 기간을 더하거나, 특정 형식의 날짜를 변환할 때 유용하게 사용됩니다.

이러한 기능을 수행하는 대표적인 함수가 바로 strtotime() 입니다.

이 글에서는 PHP strtotime() 함수의 사용법, 다양한 활용 예제, time() 및 date()와의 차이점, 유용한 팁과 주의사항을 체계적으로 정리하겠습니다. 


1. strtotime() 함수란?

기본 문법

int|false strtotime(string $datetime, int $baseTimestamp = time())

매개변수 설명

매개변수 설명

$datetime 변환할 날짜/시간 문자열 (예: "2024-12-31", "next Monday")
$baseTimestamp (선택) 기준이 되는 타임스탬프 (기본값: time(), 즉 현재 시간)

반환값

  • $datetime을 Unix 타임스탬프(초 단위)로 변환하여 반환
  • 실패 시 false 반환

2. strtotime() 기본 예제

🔹 날짜를 타임스탬프로 변환

<?php
$timestamp = strtotime("2024-12-31");
echo $timestamp;
?>

🔹 실행 결과 (예시)

1735689600

"2024-12-31" 날짜를 Unix 타임스탬프(초 단위)로 변환.


🔹 변환된 타임스탬프를 date()와 함께 사용

<?php
$timestamp = strtotime("2024-12-31");
echo date("Y-m-d H:i:s", $timestamp);
?>

🔹 실행 결과

2024-12-31 00:00:00

date()와 함께 사용하면 사람이 읽을 수 있는 형식으로 출력 가능.


3. strtotime()의 실용적인 활용 예제

🔹 1) +, - 연산으로 날짜 계산

<?php
$nextWeek = strtotime("+1 week");
echo date("Y-m-d", $nextWeek);
?>

현재 날짜에서 1주일 후의 날짜 계산 가능.

<?php
$threeDaysAgo = strtotime("-3 days");
echo date("Y-m-d", $threeDaysAgo);
?>

현재 날짜에서 3일 전의 날짜 계산 가능.


🔹 2) 상대적 날짜 표현 (next Monday, last Friday)

<?php
echo date("Y-m-d", strtotime("next Monday"));
echo date("Y-m-d", strtotime("last Friday"));
?>

특정 요일을 쉽게 계산 가능.


🔹 3) 특정 날짜 기준으로 날짜 계산

<?php
$base = strtotime("2024-12-31");
$nextMonth = strtotime("+1 month", $base);
echo date("Y-m-d", $nextMonth);
?>

기준 날짜(2024-12-31)를 설정하고 1개월 후의 날짜 계산 가능.


🔹 4) 1년 후의 같은 날 계산

<?php
$nextYear = strtotime("+1 year");
echo date("Y-m-d", $nextYear);
?>

현재 날짜에서 1년 후 계산 가능.


🔹 5) 두 날짜 간의 차이 계산

<?php
$date1 = strtotime("2024-01-01");
$date2 = strtotime("2024-12-31");

$diff = ($date2 - $date1) / (60 * 60 * 24);
echo "두 날짜의 차이: $diff 일";
?>

두 날짜 간의 일(day) 수 계산 가능.


🔹 6) 타임스탬프를 date()와 함께 사용하여 현재 날짜 변환

<?php
echo date("Y-m-d H:i:s", strtotime("now"));
?>

현재 시간을 원하는 형식으로 출력 가능.


4. strtotime() vs time() vs mktime() 차이점

함수 설명

strtotime("2024-12-31") 문자열을 타임스탬프로 변환
time() 현재 Unix 타임스탬프 반환
mktime(0,0,0,12,31,2024) 특정 날짜의 타임스탬프 반환

예제: time() vs strtotime()

<?php
echo time(); // 현재 타임스탬프
echo strtotime("today"); // 오늘 날짜의 타임스탬프
?>

5. strtotime() 사용 시 주의할 점

잘못된 날짜는 false 반환

<?php
$timestamp = strtotime("invalid date");

if ($timestamp === false) {
    echo "잘못된 날짜 형식입니다.";
}
?>

잘못된 형식의 날짜는 false를 반환하므로 예외 처리 필요.

+1 month는 예상과 다르게 동작할 수 있음

<?php
echo date("Y-m-d", strtotime("2024-01-31 +1 month"));
?>

🔹 실행 결과

2024-03-02

1월 31일에서 1개월 추가 시 2월 31일이 없기 때문에 자동 조정됨.

정확한 월 계산이 필요하면 first day of 또는 last day of 사용

<?php
echo date("Y-m-d", strtotime("first day of +1 month"));
echo date("Y-m-d", strtotime("last day of +1 month"));
?>

정확한 월별 첫째 날과 마지막 날을 계산 가능.

시간이 포함된 문자열을 변환할 때 주의

<?php
echo date("Y-m-d H:i:s", strtotime("2024-12-31 14:30:00"));
?>

시간까지 포함된 날짜 변환도 가능.


6. strtotime() 활용 팁

쿠키 만료 시간 설정

<?php
setcookie("user", "Alice", strtotime("+1 day"));
?>

쿠키 만료 시간을 상대적 날짜 표현으로 설정 가능.

이전 날짜와 비교

<?php
if (strtotime("2024-01-01") < time()) {
    echo "이미 지난 날짜입니다.";
}
?>

미래 날짜인지 확인 가능.

데이터베이스 날짜 변환

<?php
$dbDate = "2024-12-31 14:30:00";
echo strtotime($dbDate);
?>

DB에서 가져온 문자열 날짜를 타임스탬프로 변환 가능.

로그 파일 이름 자동 생성

<?php
$logFile = "log_" . date("Y-m-d", strtotime("now")) . ".txt";
?>

날짜별 로그 파일 자동 생성 가능.


7. 결론

PHP의 strtotime() 함수는 날짜를 타임스탬프로 변환하는 필수적인 함수입니다.
이를 활용하면 날짜 비교, 일정 계산, 상대적 날짜 변환, 데이터 저장 및 변환 등 다양한 작업을 수행할 수 있습니다.

📌 핵심 요약
✔️ strtotime()은 문자열을 Unix 타임스탬프로 변환
✔️ 상대적 날짜 표현(+1 day, next Monday) 지원
✔️ 날짜 계산, 일정 비교, 타임스탬프 변환에 유용
✔️ 잘못된 날짜는 false 반환하므로 예외 처리 필요

이제 strtotime()을 활용하여 더욱 효율적인 PHP 날짜 처리를 해보세요!

728x90