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 날짜 처리를 해보세요!
'💻 자주 쓰는 PHP 함수' 카테고리의 다른 글
[PHP 함수] preg_replace() 함수로 패턴 치환 (26) | 2025.03.29 |
---|---|
[PHP 함수] time() 함수 사용하기 (14) | 2025.03.28 |
[PHP 함수] strtolower() 함수 - 문자열 소문자 변환 (14) | 2025.03.28 |
[PHP 함수] json_encode() 함수로 json으로 변환하기 (26) | 2025.03.27 |
[PHP 함수] json_decode() 함수로 Json을 배열로 변환 (6) | 2025.03.27 |