PHP 날짜, 시간, 요일 등 관련
페이지 정보
![profile_image](https://www.happyjung.com/img/no_profile.gif)
본문
PHP 로 구현되는 다양한 날짜, 시간, 요일을 표현하는 문법과 함수를 정리하였습니다.
1. DATE()
date() 함수는 어떠한 시간(현재시간이나 예전 시간이나)을 사용자가 원하는 거의 모든 형태로 바꿔줄 수 있습니다.
a : am, pm
A : AM,PM
d : 2자리 정수의 날짜 형태
D : 요일의 앞 3글자 (Fri, Thu, Tue ... )
F : 해당 달의 이름 형태 (March, December, ... )
h : 2자리 정수의 시간 (12시간 이내)
H : 2자리 정수의 시간(24시간)
i : 2자리 정수의 분
l : 해당 날의 요일 (Friday, Thursday ... )
m : 해당 달의 2자리 정수 형태
M : 해당하는 달의 이름 앞 3글자 (Jan, Dec, ... )
s : 정수형의 초
T : 해당하는 달에 날이 몇일까지 있는지 (28,29,30,31)
Y : 해당 년의 4자리 정수 형태 (2001)
y : 해당 년의 2자리 정수 형태 (01)
z : 해당 년 1월 1일부터 몇일째 날인지
현재 날짜
$today = date("Y-m-d", mktime(0,0,0,date("m") , date("d"), date("Y")));
$today = date("Y-m-d", time(0)); 이라고 해도 같은 결과가 나온다.
결과 2014-01-14
$today = date("Y-m-d H:i:s");
결과 2018-03-28 15:21:30
2. mktime()
예전 날짜나 미래 날짜를 지정해서 사용할때 많이 활용
mktime(); 는 오늘의 timestamp 값
h : 시
i : 분
s : 초
m : 월
d : 일
y : 년
$str = mktime(시,분,초,월,일,연도);
이렇게 하시면 $str에 지정하신 시간의 자료가 TimeStamp 값으로 저장됩니다.
그 자료를 date()함수로 원하는 형태로 나타낼 수 있습니다. :)
어떤 예전 날짜나 미래의 날짜가 무슨 요일인지도 쉽게 알아볼 수 있죠.
Oct 04, 2002 (Fri) 형태의 시간 표시
now()로 시간을 mysql상에서 저장하게 되면 2002-10-4 19:23:40 이런식으로 저장이 됩니다.
그러면 이렇게
$date = substr($data, 0, 10);
$str = explode("-", $date);
$date = date("M d, Y (D)", mktime(0, 0, 0, $str[1], $str[2], $str[0]));
이런식으로 앞의 10글자만 따오고 ( 2002-10-04 <- 10글자 맞죠? )
"-" 이 다시 기호로 분리시켜서 :)
date()함수와 mktime()함수를 이용해서 날짜를 원하는 형태로 만들어주게 됩니다.
function mktime(h, i, s, m, d, y){
var mkt = new Date(y, m-1, d, h, i, s);
if( mktime.arguments.length == 0 ) mkt = new Date();
return Math.floor(mkt.getTime()/1000);
}
3. 날짜 계산
' ASP의 left, mid, right 역할의 함수 만들기
' https://www.happyjung.com/lecture/832
function right($value, $count){
$value = substr($value, (strlen($value) - $count), strlen($value));
return $value;
}
function left($string, $count){
return substr($string, 0, $count);
}
$Cdate = time()-(60*49*12-430); // 현재시간 - 4분
$CSdate = date("YmdHis",$Cdate);
echo left($CSdate,4) . "-". substr($CSdate,4,2) . "-". substr($CSdate,6,2) . " ". substr($CSdate,8,2) . ":". substr($CSdate,10,2) . ":". substr($CSdate,10,2) ;
결과 2014-01-14 14:34:20
4. 현재 시간을 Unix timestamp로 변환
echo time();
5. 특정 날짜를 Unix timestamp로 변환
echo strtotime("2015-08-03 13:42:00");
6. date를 이용한 날짜 출력
echo date("Y-m-d h:i:s");
7. date를 이용한 날짜 출력 (한국시각으로 시간대(timezone) 설정)
![](https://happyjung.diskn.com/data/lecture/php_date_timezone_20210222_1.png)
PHP에서 별도의 시간대(timezone)을 설정하지 않고, date() 함수를 이용하여 현재 시각을 출력하면 "UTC" 시각으로 출력되어 현재 시각보다 9시간 느린 "UTC" 시각이 출력됩니다.
PHP 코드로 시간대(timezone)를 동적으로 설정하는 방법은 "date_default_timezone_set()" 함수를 이용합니다.
date_default_timezone_set("Asia/Seoul"); // 한국시각으로 시간대(timezone) 설정
echo date("Y-m-d h:i:s");
![](https://happyjung.diskn.com/data/lecture/php_date_timezone_20210222_2.png)
8. gmdate를 이용한 날짜 출력 (세계표준시로 출력)
echo gmdate("Y-m-d h:i:s");
9. 날짜계산 : 2019-05-13 15:23:50 형식
echo "1일후 : ". date("Y-m-d H:i:s",strtotime("1 day", time())) ."<br>";
echo "현재시간 : ". date("Y-m-d H:i:s") ."<br>";
echo "1일전 : ". date("Y-m-d H:i:s",strtotime("-1 day", time())) ."<br><br>";
echo "1시간후 : ". date("Y-m-d H:i:s",strtotime("-1 hour", time())) ."<br>";
echo "현재시간 : ". date("Y-m-d H:i:s") ."<br>";
echo "1시간후 : ". date("Y-m-d H:i:s",strtotime("1 hour", time())) ."<br><br>";
echo "10분 전 : ". date("Y-m-d H:i:s",strtotime("-10 minutes", time())) ."<br>";
echo "현재시간 : ". date("Y-m-d H:i:s") ."<br>";
echo "10분 후 : ". date("Y-m-d H:i:s",strtotime("10 minutes", time())) ."<br><br>";
echo "10초 전 : ". date("Y-m-d H:i:s",strtotime("-10 second", time())) ."<br>";
echo "현재시간 : ". date("Y-m-d H:i:s") ."<br>";
echo "10초 후 : ". date("Y-m-d H:i:s",strtotime("10 second", time())) ."<br><br>";
10. 날짜계산 : timestamp 형식
echo "1일후 : ". strtotime("1 day", time()) ."<br>";
echo "현재시간 : ". time() ."<br>";
echo "1일전 : ". strtotime("-1 day", time()) ."<br><br>";
echo "1시간후 : ". strtotime("-1 hour", time()) ."<br>";
echo "현재시간 : ". time() ."<br>";
echo "1시간후 : ". strtotime("1 hour", time()) ."<br><br>";
echo "10분 전 : ". strtotime("-10 minutes", time()) ."<br>";
echo "현재시간 : ". time() ."<br>";
echo "10분 후 : ". strtotime("10 minutes", time()) ."<br><br>";
echo "10초 전 : ". strtotime("-10 second", time()) ."<br>";
echo "현재시간 : ". time() ."<br>";
echo "10초 후 : ". strtotime("10 second", time()) ."<br><br>";
11. 몇초전, 몇분전, 몇시간전, 몇일전, 몇달전, 몇년전 출력하는 함수
<?php
if(!function_exists('get_date_diff')){
function get_date_diff($date){
$diff = time() - strtotime($date);
$s = 60; //1분 = 60초
$h = $s * 60; //1시간 = 60분
$d = $h * 24; //1일 = 24시간
$y = $d * 30; //1달 = 30일 기준
$a = $y * 12; //1년
if ($diff < $s) {
$result = $diff . '초전';
} elseif ($h > $diff && $diff >= $s) {
$result = round($diff/$s) . '분전';
} elseif ($d > $diff && $diff >= $h) {
$result = round($diff/$h) . '시간전';
} elseif ($y > $diff && $diff >= $d) {
$result = round($diff/$d) . '일전';
} elseif ($a > $diff && $diff >= $y) {
$result = round($diff/$y) . '달전';
} else {
$result = round($diff/$a) . '년전';
}
return $result;
}
}
?>
12. 날짜의 요일 구하기
$day = "2023-07-07";
날짜의 요일정보는 date 함수의 'w' 포맷 문자열을 사용해서 구할 수 있습니다.
반환되는 값은 0부터 6까지의 숫자값으로 일~토 까지를 나타냅니다.
다음과 같이 사용할 수 있습니다.
$yoil = array("일","월","화","수","목","금","토");
echo($yoil[date('w', strtotime($day))]);
13. 월의 마지막 날짜 구하기
특정월의 마지막 날짜를 구하는 방법입니다.
// date함수의 포맷문자열 't'를 사용합니다.
$day_count = date('t', strtotime("2023-09-01"));
echo $day_count ."<br>";
// mktime함수의 인자는 순서대로 시간, 분, 초, 월, 일, 년도 입니다.
$day_count = date('t', mktime(0, 0, 1, 9, 1, 2023));
echo $day_count ."<br>";
14. 오전 오후 표시를 24시간 형식으로 변경
$dd = "2024-10-18 오후 5:07:53";
$hanArr=['오전', '오후']; $engArr=['','P.M'];
$dd =str_replace( $hanArr, $engArr , $dd);
$newdd =date("Y-m-d H:i:s", strtotime( $dd));
echo "결과값 ". $newdd;
결과값 2024-10-18 17:07:53
참고자료
http://cafe.naver.com/iamandy/644
http://blog.naver.com/wlgns5376/140045477457
http://nalba.tistory.com/28
http://ksunghyun.tistory.com/119
http://the-review.co.kr/221176852466
http://blog.devez.net/304
https://hbesthee.tistory.com/1625
https://blog.naver.com/PostView.naver?blogId=qfwh&logNo=222422255635
https://blog.naver.com/mtjeaids/70093547646
https://m.blog.naver.com/mtjeaids/70093549515
https://sir.kr/qa/545212
1. DATE()
date() 함수는 어떠한 시간(현재시간이나 예전 시간이나)을 사용자가 원하는 거의 모든 형태로 바꿔줄 수 있습니다.
a : am, pm
A : AM,PM
d : 2자리 정수의 날짜 형태
D : 요일의 앞 3글자 (Fri, Thu, Tue ... )
F : 해당 달의 이름 형태 (March, December, ... )
h : 2자리 정수의 시간 (12시간 이내)
H : 2자리 정수의 시간(24시간)
i : 2자리 정수의 분
l : 해당 날의 요일 (Friday, Thursday ... )
m : 해당 달의 2자리 정수 형태
M : 해당하는 달의 이름 앞 3글자 (Jan, Dec, ... )
s : 정수형의 초
T : 해당하는 달에 날이 몇일까지 있는지 (28,29,30,31)
Y : 해당 년의 4자리 정수 형태 (2001)
y : 해당 년의 2자리 정수 형태 (01)
z : 해당 년 1월 1일부터 몇일째 날인지
현재 날짜
$today = date("Y-m-d", mktime(0,0,0,date("m") , date("d"), date("Y")));
$today = date("Y-m-d", time(0)); 이라고 해도 같은 결과가 나온다.
결과 2014-01-14
$today = date("Y-m-d H:i:s");
결과 2018-03-28 15:21:30
2. mktime()
예전 날짜나 미래 날짜를 지정해서 사용할때 많이 활용
mktime(); 는 오늘의 timestamp 값
h : 시
i : 분
s : 초
m : 월
d : 일
y : 년
$str = mktime(시,분,초,월,일,연도);
이렇게 하시면 $str에 지정하신 시간의 자료가 TimeStamp 값으로 저장됩니다.
그 자료를 date()함수로 원하는 형태로 나타낼 수 있습니다. :)
어떤 예전 날짜나 미래의 날짜가 무슨 요일인지도 쉽게 알아볼 수 있죠.
Oct 04, 2002 (Fri) 형태의 시간 표시
now()로 시간을 mysql상에서 저장하게 되면 2002-10-4 19:23:40 이런식으로 저장이 됩니다.
그러면 이렇게
$date = substr($data, 0, 10);
$str = explode("-", $date);
$date = date("M d, Y (D)", mktime(0, 0, 0, $str[1], $str[2], $str[0]));
이런식으로 앞의 10글자만 따오고 ( 2002-10-04 <- 10글자 맞죠? )
"-" 이 다시 기호로 분리시켜서 :)
date()함수와 mktime()함수를 이용해서 날짜를 원하는 형태로 만들어주게 됩니다.
function mktime(h, i, s, m, d, y){
var mkt = new Date(y, m-1, d, h, i, s);
if( mktime.arguments.length == 0 ) mkt = new Date();
return Math.floor(mkt.getTime()/1000);
}
3. 날짜 계산
' ASP의 left, mid, right 역할의 함수 만들기
' https://www.happyjung.com/lecture/832
function right($value, $count){
$value = substr($value, (strlen($value) - $count), strlen($value));
return $value;
}
function left($string, $count){
return substr($string, 0, $count);
}
$Cdate = time()-(60*49*12-430); // 현재시간 - 4분
$CSdate = date("YmdHis",$Cdate);
echo left($CSdate,4) . "-". substr($CSdate,4,2) . "-". substr($CSdate,6,2) . " ". substr($CSdate,8,2) . ":". substr($CSdate,10,2) . ":". substr($CSdate,10,2) ;
결과 2014-01-14 14:34:20
4. 현재 시간을 Unix timestamp로 변환
echo time();
5. 특정 날짜를 Unix timestamp로 변환
echo strtotime("2015-08-03 13:42:00");
6. date를 이용한 날짜 출력
echo date("Y-m-d h:i:s");
7. date를 이용한 날짜 출력 (한국시각으로 시간대(timezone) 설정)
![](https://happyjung.diskn.com/data/lecture/php_date_timezone_20210222_1.png)
PHP에서 별도의 시간대(timezone)을 설정하지 않고, date() 함수를 이용하여 현재 시각을 출력하면 "UTC" 시각으로 출력되어 현재 시각보다 9시간 느린 "UTC" 시각이 출력됩니다.
PHP 코드로 시간대(timezone)를 동적으로 설정하는 방법은 "date_default_timezone_set()" 함수를 이용합니다.
date_default_timezone_set("Asia/Seoul"); // 한국시각으로 시간대(timezone) 설정
echo date("Y-m-d h:i:s");
![](https://happyjung.diskn.com/data/lecture/php_date_timezone_20210222_2.png)
8. gmdate를 이용한 날짜 출력 (세계표준시로 출력)
echo gmdate("Y-m-d h:i:s");
9. 날짜계산 : 2019-05-13 15:23:50 형식
echo "1일후 : ". date("Y-m-d H:i:s",strtotime("1 day", time())) ."<br>";
echo "현재시간 : ". date("Y-m-d H:i:s") ."<br>";
echo "1일전 : ". date("Y-m-d H:i:s",strtotime("-1 day", time())) ."<br><br>";
echo "1시간후 : ". date("Y-m-d H:i:s",strtotime("-1 hour", time())) ."<br>";
echo "현재시간 : ". date("Y-m-d H:i:s") ."<br>";
echo "1시간후 : ". date("Y-m-d H:i:s",strtotime("1 hour", time())) ."<br><br>";
echo "10분 전 : ". date("Y-m-d H:i:s",strtotime("-10 minutes", time())) ."<br>";
echo "현재시간 : ". date("Y-m-d H:i:s") ."<br>";
echo "10분 후 : ". date("Y-m-d H:i:s",strtotime("10 minutes", time())) ."<br><br>";
echo "10초 전 : ". date("Y-m-d H:i:s",strtotime("-10 second", time())) ."<br>";
echo "현재시간 : ". date("Y-m-d H:i:s") ."<br>";
echo "10초 후 : ". date("Y-m-d H:i:s",strtotime("10 second", time())) ."<br><br>";
10. 날짜계산 : timestamp 형식
echo "1일후 : ". strtotime("1 day", time()) ."<br>";
echo "현재시간 : ". time() ."<br>";
echo "1일전 : ". strtotime("-1 day", time()) ."<br><br>";
echo "1시간후 : ". strtotime("-1 hour", time()) ."<br>";
echo "현재시간 : ". time() ."<br>";
echo "1시간후 : ". strtotime("1 hour", time()) ."<br><br>";
echo "10분 전 : ". strtotime("-10 minutes", time()) ."<br>";
echo "현재시간 : ". time() ."<br>";
echo "10분 후 : ". strtotime("10 minutes", time()) ."<br><br>";
echo "10초 전 : ". strtotime("-10 second", time()) ."<br>";
echo "현재시간 : ". time() ."<br>";
echo "10초 후 : ". strtotime("10 second", time()) ."<br><br>";
11. 몇초전, 몇분전, 몇시간전, 몇일전, 몇달전, 몇년전 출력하는 함수
<?php
if(!function_exists('get_date_diff')){
function get_date_diff($date){
$diff = time() - strtotime($date);
$s = 60; //1분 = 60초
$h = $s * 60; //1시간 = 60분
$d = $h * 24; //1일 = 24시간
$y = $d * 30; //1달 = 30일 기준
$a = $y * 12; //1년
if ($diff < $s) {
$result = $diff . '초전';
} elseif ($h > $diff && $diff >= $s) {
$result = round($diff/$s) . '분전';
} elseif ($d > $diff && $diff >= $h) {
$result = round($diff/$h) . '시간전';
} elseif ($y > $diff && $diff >= $d) {
$result = round($diff/$d) . '일전';
} elseif ($a > $diff && $diff >= $y) {
$result = round($diff/$y) . '달전';
} else {
$result = round($diff/$a) . '년전';
}
return $result;
}
}
?>
12. 날짜의 요일 구하기
$day = "2023-07-07";
날짜의 요일정보는 date 함수의 'w' 포맷 문자열을 사용해서 구할 수 있습니다.
반환되는 값은 0부터 6까지의 숫자값으로 일~토 까지를 나타냅니다.
다음과 같이 사용할 수 있습니다.
$yoil = array("일","월","화","수","목","금","토");
echo($yoil[date('w', strtotime($day))]);
13. 월의 마지막 날짜 구하기
특정월의 마지막 날짜를 구하는 방법입니다.
// date함수의 포맷문자열 't'를 사용합니다.
$day_count = date('t', strtotime("2023-09-01"));
echo $day_count ."<br>";
// mktime함수의 인자는 순서대로 시간, 분, 초, 월, 일, 년도 입니다.
$day_count = date('t', mktime(0, 0, 1, 9, 1, 2023));
echo $day_count ."<br>";
14. 오전 오후 표시를 24시간 형식으로 변경
$dd = "2024-10-18 오후 5:07:53";
$hanArr=['오전', '오후']; $engArr=['','P.M'];
$dd =str_replace( $hanArr, $engArr , $dd);
$newdd =date("Y-m-d H:i:s", strtotime( $dd));
echo "결과값 ". $newdd;
결과값 2024-10-18 17:07:53
참고자료
http://cafe.naver.com/iamandy/644
http://blog.naver.com/wlgns5376/140045477457
http://nalba.tistory.com/28
http://ksunghyun.tistory.com/119
http://the-review.co.kr/221176852466
http://blog.devez.net/304
https://hbesthee.tistory.com/1625
https://blog.naver.com/PostView.naver?blogId=qfwh&logNo=222422255635
https://blog.naver.com/mtjeaids/70093547646
https://m.blog.naver.com/mtjeaids/70093549515
https://sir.kr/qa/545212
댓글목록
등록된 댓글이 없습니다.