PHP 3분 핵심 요약집
3.10. 날짜 시간 계산하기
연서은
2024. 4. 17. 11:47
php에서 날짜와 시간을 처리하는 방법을 알아본다.
<?php
$date1 = date("Y-m-d H:i:s");
$date2 = new DateTime();
$date2_str = $date2->format("Y-m-d H:i:s");
var_dump($date1); echo "<br />";
var_dump($date2); echo "<br />";
var_dump($date2_str); echo "<br />";
$tomorrow = $date2->add(new DateInterval("P1D"));
var_dump($tomorrow); echo "<br />";
위 코드를 datetime.php 파일에 저장하고 브라우저에서 결과를 확인한다.
string(19) "2020-07-23 07:28:18"
object(DateTime)#1 (3) { ["date"]=> string(26) "2020-07-23 07:28:18.498365" ["timezone_type"]=> int(3) ["timezone"]=> string(13) "Europe/Berlin" }
string(19) "2020-07-23 07:28:18"
object(DateTime)#1 (3) { ["date"]=> string(26) "2020-07-24 07:28:18.498365" ["timezone_type"]=> int(3) ["timezone"]=> string(13) "Europe/Berlin" }
고전적인 php 는 날짜를 문자열로 처리한다. $date1 이 예시이다.
$date1 = date("Y-m-d H:i:s");
"Y-m-d H:i:s"는 날짜 포메터라고 부른다.
- Y 는 년도(Year) 4 자리.
- y 는 년도 2 자리.
- m 은 월(month).
- d 는 일(day).
- H 는 24시간 표기 시간(hour).
- h 는 12시간 표기 시간.
- i 는 분.
- s 는 초(second)를 나타낸다.
따라서 2021년 2월 24일 10시 30분 25초를 Y-m-d H:i:s 형식으로 나타내면 2021-02-24 10:30:25가 된다. ymd로 표기하면 210224다.
PHP 5.2.0 버전 이상부터는 날짜 타입 DateTime 이 있다. 단순 문자열이 아니라 날짜를 더하거나 빼거나 비교하는 것이 가능하다.
$date2 = new DateTime();
DateTime 타입을 포멧 문자열로 바꾸고 싶으면 ->format(날짜포메터) 메소드를 사용한다.
$date2->format("Y-m-d H:i:s")
날짜를 더하고 싶으면 add 메소드를 사용한다. add 함수의 메소드는 DateInterval 객체 타입을 파라미터로 받는다. DateInterval 객체의 파라미터 "P1D" 는 Period one(1) Day 의 약자로 하루 간격 이란 뜻이다.
$date2 = new DateTime();
$date2->add(new DateInterval("P1D"));
DateTime 타입 객체를 사용하지 않고 문자열을 이용해 하루를 추가하려면 아래와 같이 한다.
date("Y-m-d", strtotime($date1.'+ 1 days'))
날짜 표현을 시간으로 바꾸고, 시간을 다시 날짜로 변경하는 것이다.
위 표현을 풀어보면 아래와 같다.
Copy$date = "2021-02-24";
$tomorrow_expression = $date . " + 1 days"; // 2021-02-24 + 1 days
$tomorrow_time = strtotime($tomorrow_expression); // 1614207600
$tomorrow_date = date("Y-m-d", $tomorrow_time); // 2021-02-25