반응형
Web Development · PHP 날짜·시간 함수
PHP time() — 유닉스 타임스탬프를 반환하는 함수
타임스탬프 개념 · date() 연계 · 날짜 계산 · microtime 완전 정리
시작 오늘 분석할 코드
time()은 현재 시각을 유닉스 타임스탬프(Unix Timestamp)로 반환하는 함수입니다. 유닉스 타임스탬프는 1970년 1월 1일 00:00:00 UTC 기준으로 지금까지 경과한 초(second) 수를 정수로 표현한 값입니다. PHP의 날짜·시간 함수 대부분이 이 값을 기준으로 동작합니다.
<?php $now = time(); // 현재 시각의 유닉스 타임스탬프 반환 // 예: 1750000000 (정수, 1970-01-01부터 초 단위 경과) print $now; // 예) 1750000000 ?>
실제 출력 미리보기
time() 반환값 (예시)
1750000000
초 단위 정수 — 매 초마다 +1
date()로 변환하면
2025년 06월 15일
date('Y년m월d일', time())
용어 용어 정리
time()현재 시각의 유닉스 타임스탬프(정수)를 반환. 인수 없음
유닉스 타임스탬프1970-01-01 00:00:00 UTC 기준 경과 초 수. 음수면 그 이전
date()타임스탬프를 사람이 읽을 수 있는 날짜 문자열로 포맷하는 함수
mktime()특정 날짜/시각의 타임스탬프를 생성 — time()의 반대 방향
microtime()마이크로초 단위 타임스탬프 반환. 실행 시간 측정에 사용
strtotime()날짜 문자열을 타임스탬프로 변환. '+7 days' 같은 상대 표현 가능
UTC협정 세계시(Coordinated Universal Time). 타임존의 기준점
타임존서버/PHP 설정의 시간대. date_default_timezone_set()으로 지정
1 유닉스 타임스탬프란 — 왜 1970년 기준인가?
Unix 운영체제가 탄생한 해를 기준으로 삼음
유닉스 타임스탬프는 1970년 1월 1일 자정(00:00:00 UTC)을 기준으로 지금까지 지나간 초(second)의 수입니다. 이 기준점을 "Unix Epoch"라고 부릅니다. 정수 하나로 전 세계 어디서든 동일한 시각을 나타낼 수 있어 타임존 차이 없이 날짜 계산이 가능합니다.
// 현재 타임스탬프 $now = time(); // 예: 1750000000 // 1초 후 // $now = 1750000001 // 사람이 읽을 수 있는 형태로 확인 echo date('Y-m-d H:i:s', $now); // 예: 2025-06-15 10:30:00
※ 타임스탬프는 정수이므로 사칙연산으로 날짜 계산이 가능합니다. 1일 = 86400초 (60×60×24)입니다.
2 date()와 함께 사용 — 정수를 날짜 문자열로
time()이 반환한 정수를 date()로 포맷하는 패턴
time()은 정수를 반환할 뿐, 그 자체로는 사람이 읽기 어렵습니다. date()의 두 번째 인수로 넘기면 원하는 형식의 날짜 문자열로 변환됩니다.
$now = time(); echo date('Y-m-d', $now); // 2025-06-15 echo date('Y년 m월 d일', $now); // 2025년 06월 15일 echo date('Y-m-d H:i:s', $now); // 2025-06-15 10:30:00 echo date('D, d M Y', $now); // Sun, 15 Jun 2025 echo date('U', $now); // 타임스탬프 그대로 출력
3 날짜 계산 — 타임스탬프의 핵심 장점
초 단위 덧셈·뺄셈으로 날짜 이동
타임스탬프가 정수이기 때문에 날짜 계산이 매우 간단합니다. 1일=86400, 1시간=3600, 1분=60을 더하거나 빼면 됩니다.
$now = time(); // 7일 후 $next_week = $now + (60 * 60 * 24 * 7); echo date('Y-m-d', $next_week); // 30일 전 $month_ago = $now - (60 * 60 * 24 * 30); echo date('Y-m-d', $month_ago); // 만료 여부 판단 (토큰이 24시간 내 발행됐는지) $issued_at = 1749913600; // 저장된 발행 시각 if (time() - $issued_at < 86400) { echo "유효한 토큰"; }
※ strtotime('+7 days')로 "7일 후 타임스탬프"를 더 읽기 쉽게 표현할 수도 있습니다.
반응형
4 microtime() — 마이크로초 단위 측정
실행 시간 측정에 microtime(true) 사용
time()은 초 단위지만, 스크립트 실행 시간을 측정하려면 마이크로초(100만분의 1초) 단위가 필요합니다. microtime(true)는 부동소수점으로 현재 시각을 반환합니다.
$start = microtime(true); // 측정할 코드 실행 for ($i = 0; $i < 100000; $i++) { /* 반복 작업 */ } $end = microtime(true); $elapsed = $end - $start; echo number_format($elapsed, 4) . "초"; // 예: 0.0023초
5 타임존 설정 — 서버 시각과 한국 시각
date_default_timezone_set()으로 한국 시간대 적용
서버가 UTC나 미국 시간대로 설정돼 있으면 time()이 반환하는 타임스탬프 자체는 같지만, date()로 포맷했을 때 현지 시각이 다르게 출력됩니다. 한국 시간(KST, UTC+9)을 사용하려면 타임존을 설정해야 합니다.
// 한국 시간대 설정 (스크립트 상단에 한 번) date_default_timezone_set('Asia/Seoul'); echo date('Y-m-d H:i:s', time()); // 한국 현지 시각으로 출력됨 // 또는 php.ini에서 설정 // date.timezone = Asia/Seoul
6 자주 하는 실수
| 실수 | 증상 | 해결 |
|---|---|---|
| time()을 직접 출력해서 읽으려 함 | 1750000000 같은 의미 없는 숫자만 보임 | date('Y-m-d', time())으로 포맷해서 사용 |
| 타임존 미설정 상태에서 date() 사용 | 서버가 UTC면 한국 시각보다 9시간 느리게 출력 | date_default_timezone_set('Asia/Seoul') 설정 |
| 날짜 계산에 "1달=30일"로 고정 | 월마다 날 수가 달라 계산 오차 발생 | strtotime('+1 month', $ts) 사용 |
| 실행 시간 측정에 time() 사용 | 초 단위라 짧은 실행은 0이나 1만 나옴 | microtime(true) 사용 |
| 타임스탬프를 날짜처럼 비교 | 타임스탬프는 크면 더 나중 — 정수 비교로 판단 | $ts1 < $ts2면 $ts1이 더 이른 시각 |
핵심 한 줄 요약
time()현재 시각의 유닉스 타임스탬프(정수) 반환 — 인수 없음
유닉스 타임스탬프1970-01-01 UTC 기준 초 단위 경과 수 — 정수라 계산 가능
date() 연계date('Y-m-d', time()) 로 사람이 읽을 수 있는 날짜로 변환
날짜 계산time() + 86400 = 내일 / time() - 86400 = 어제
타임존date_default_timezone_set('Asia/Seoul') 로 한국 시간대 적용
Tags
#PHP #time함수 #유닉스타임스탬프 #타임스탬프 #유닉스시간 #date함수 #microtime #PHP날짜함수 #PHP함수 #PHP학습 #웹개발 #티스토리
▼ 티스토리 태그 입력란 복사용
PHP, time함수, 유닉스타임스탬프, 타임스탬프, 유닉스시간, date함수, microtime, PHP날짜함수, PHP함수, PHP학습, 웹개발, 티스토리
반응형
'php' 카테고리의 다른 글
| PHP mktime() — 특정 날짜의 타임스탬프 생성 · date 연계 · 날짜 계산 완전 정리 (0) | 2026.07.10 |
|---|---|
| PHP checkdate() — 날짜 유효성 검사 · 윤년 · 폼 입력 검증 완전 정리 (0) | 2026.07.10 |
| PHP trim() — 양끝 공백 제거 · ltrim · rtrim · 커스텀 문자 완전 정리 (0) | 2026.07.10 |
| PHP substr() — 문자열 일부 추출 · 음수 인덱스 · mb_substr 차이 완전 정리 (0) | 2026.07.10 |
| PHP str_replace() — 문자열 찾아 바꾸기 · 배열 치환 · 대소문자 완전 정리 (0) | 2026.07.10 |
왕진 블로그

댓글