본문 바로가기
PHP

PHP 날짜(시간)표기, 날짜 계산하기

by square_man_tile 2021. 2. 1.
반응형

코드에서 날짜를 계산하게 되는 경우가 더러 있다.

 

현재 시간이라던지, 입력받은 시간으로부터 특정 시간과의 차이 등...

 

현재 시간을 구하는 방법은 아주 간단하다.

$time_now = date("Y-m-d H:i:s");

괄호 안에 들어가는 형식은 다음과 같다.

결과
Y 년도(4자리 표시)
소문자로 입력시 뒤 2자리만 표시
ex) Y : 2021  /  y : 21
m
소문자로 입력시 숫자, 대문자는 영문 약자 표시
ex) m : 02  /  M : Feb
d
소문자로 입력시 날짜, 대문자는 요일 표시
ex) d : 01  /  D : Mon
H 시간
소문자로 입력시 0~12시로, 대문자는 0~23시로 표시
ex 오후3시) h : 03  /  H : 15
i
그냥 소문자로 입력
s
그냥 소문자로 입력

결과 예시를 몇가지 보겠다.

<?php
  $time_now = date("Y-M-d H:i"); //1번
  echo "<pre>";
  print_r($time_now);
  echo "</pre>";

  $time_now = date("Y-m-D h:i:s"); //2번
  echo "<pre>";
  print_r($time_now);
  echo "</pre>";

  $time_now = date("y-m-d His"); //3번
  echo "<pre>";
  print_r($time_now);
  echo "</pre>";
?>
1번 : 2021-Feb-01 14:31

2번 : 2021-02-Mon 02:31:56

3번 : 21-02-01 143156

그럼 이걸가지고 날짜를 어떻게 계산을 하는가

strtotime() 함수로 간단하게 계산이 가능하다.

만약 3일 전 날짜를 구하고 싶다면

$time_now = date("Y-m-d"); //현재 날짜

//현재 날짜에서 3일 전
$three_days_ago = date("Y-m-d", strtotime($time_now."-3 days"));

 

7시간 전을 구하고 싶다면

$time_now = date("Y-m-d His"); //현재 날짜 및 시간

$seven_hours_ago = date("Y-m-d His", strtotime($time_now."-7 hours"));

 

각각의 결과는 다음과 같다.

현재시각 2021년 02월 01일 14시 39분 기준

1번 : 2021-01-29

2번 : 2021-02-01 073932

 

두 날짜 사이의 차이 값 구하는 방법은 이렇다.

<?php
  $time_now = date("Y-m-d H:i:s");

  $date_ex = '2020-02-02 14:47:59';

  $time_dif = strtotime($time_now) - strtotime($date_ex);

  echo ceil($time_dif / (60*60*24)); //두 날짜 사이의 일 수 계산
  echo ceil($time_dif / (60*60)); //두 날짜 사이의 시간 계산
?>

$time_dif 변수에 들어갈 친구들은 순서를 잘 정해주지 않으면 결과값으로 음수가 나온다.

둘 중 더 과거인 날짜를 뒤에 두어야 양수 결과값이 나온다.

물론 순서를 고정해놓고 d-day 를 표시해주는 방법도 있겠다.

반응형

'PHP' 카테고리의 다른 글

PHP FCM 서버 연동하기  (0) 2021.01.26
PHP 안드로이드 연동 기초  (0) 2021.01.25