PHP 날짜, 시간, 요일 등 관련
페이지 정보
본문
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) 설정)
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");
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) 설정)
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");
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
댓글목록
등록된 댓글이 없습니다.