PHP에서 날짜 다루는 함수를 정리해봤다.
mktime : 주어진 시간을 유닉스 형식의 시간으로 반환
time : 현재의 시간을 유닉스 형식의 시간으로 반환
date : 날짜와 시간을 지정한 형식에 맞추어 반환
<?php
// 날짜, 시간 받아오기
// mktime(시간, 분, 초, 달, 일, 년, is_dst)
// date 함수에서 Y : 4자리수 연도, y : 2자리수 연도, m : 2자리수 월
date("Y-m-d"); // 오늘날짜
$date = date("Y/m/d", mktime(0,0,0,date("m"),date("d"), date("Y"))); // 오늘
echo $date;
echo "<br />";
echo date("Y-m-d", mktime(0,0,0, date("m"), date("d")-1, date("Y"))) ."<br />"; // 어제
echo date("Y-m-d", mktime(0,0,0, date("m"), date("d")+1, date("Y"))) ."<br />"; // 내일
echo date("Y-m-d H:i:s", mktime(date("H"), date("i"), date("s"), date("m"), date("d")-1, date("Y"))) ."<br />";
// 오늘부터 5일후의 날짜
date("Y-m-d",strtotime ("+5 days"));
//현재의 날짜인 time형식에서 strtotime에 의해 한달을 뺀 time을 date형식으로 변환
date("Y-m-d",strtotime ("-1 months"));
//현재의 날짜인 time형식에서 strtotime에 의해 하루를 더한 time을 date형식으로 변환
date("Y-m-d",strtotime ("+1 days"));
//현재의 날짜인 time형식에서 strtotime에 의해 1년을 더한 time을 date형식으로 변환
date("Y-m-d",strtotime ("+1 years"));
//현재의 날짜인 time형식에서 strtotime에 의해 24시간을 더한 time을 date형식으로 변환
date("Y-m-d",strtotime ("+24 hours"));
//현재의 날짜인 time형식에서 strtotime에 의해 1000분을 더한 time을 date형식으로 변환
date("Y-m-d",strtotime ("+1000 minutes"));
//현재의 날짜인 time형식에서 strtotime에 의해 1주일을 더한 time을 date형식으로 변환
date("Y-m-d",strtotime ("+1 week"));
// 20170411의 날짜를 timestamp형식으로 변환후 1일을 더한후 다시 timestamp형식으로 변환후 Ymd 형식의 문자열로 출력
date("Ymd",strtotime ("+1 days", strtotime('20170411')));
date("Ymd",strtotime ("+1 days", strtotime('2017-04-11')));
$date = "2015-08-02";
echo get_date($date,-5);
echo "<br />";
// strtotime 함수는 날짜형식의 문자열을 타임스탬프 즉, 밀리세컨드 형식의 데이터로 변환한다
// 날짜 뒤에 "+1 day", "+1 month", "+1 year" 등의 문자열을 붙여서 날짜를 계산할 수 있다
echo date("Y-m-d", strtotime($date.'-5 day')) ."<br />";
// 아래 코드도 동일한 결과를 보여준다
echo date("Y-m-d", strtotime('2015-08-02 -5 day')) ."<br />";
$date = "20150802";
echo get_date($date,20)."<br />";
// 입력된 날로부터 차이가 발생하는 날짜 반환하기
function get_date( $date, $gap ) {
// 년월일로 되어 있는 포멧인 경우
$date = preg_replace("/[^0-9]/", "", $date); // 숫자 이외 제거
$y = substr( $date, 0, 4 );
$m = substr( $date, 4, 2 );
$d = substr( $date, 6, 2 );
return date("Y-m-d", mktime(0,0,0, $m, $d + $gap, $y));
}
$date = "20150802";
echo get_day($date)."<br />";
// 해당 날짜의 요일(day)을 구하는 함수
function get_day( $date ) {
// 년월일로 되어 있는 포멧인 경우
$date = preg_replace("/[^0-9]/", "", $date); // 숫자 이외 제거
$y = substr( $date, 0, 4 );
$m = substr( $date, 4, 2 );
$d = substr( $date, 6, 2 );
$day_show = date("D", mktime(0,0,0, $m, $d, $y));
switch($day_show) {
case('Mon'): echo "월"; break;
case('Tue'): echo "화"; break;
case('Wed'): echo "수"; break;
case('Thu'): echo "목"; break;
case('Fri'): echo "금"; break;
case('Sat'): echo "토"; break;
case('Sun'): echo "일"; break;
}
}
echo "<br />";
echo date('Y-m-d H:i:s',strtotime('2015-08-02 14:30:50 +1 second')) ."<br />"; // 1초를 더함
echo date('Y-m-d H:i:s',strtotime('2015-08-02 14:30:50 +1 minute')) ."<br />"; // 1분을 더함
echo date('Y-m-d H:i:s',strtotime('2015-08-02 14:30:50 +1 hour')) ."<br />"; // 1시간을 더함
echo date('Y-m-d H:i:s',strtotime('2015-08-02 14:30:50 +1 day')) ."<br />"; // 1일을 더함
echo date('Y-m-d H:i:s',strtotime('2015-08-02 14:30:50 +1 month')) ."<br />"; // 1개월을 더함
echo date('Y-m-d H:i:s',strtotime('2015-08-02 14:30:50 +1 year')) ."<br />"; // 1년을 더함
echo "<br />";
$time = time();
echo date("Y-m-d",strtotime("-1 day", $time))." // 하루 전(어제)"."<br />";
echo date("Y-m-d",strtotime("now", $time))." // 현재"."<br />";
echo date("Y-m-d",strtotime("+1 day", $time))." // 하루 후(내일)"."<br />";
echo date("Y-m-d",strtotime("+15 day", $time))." // 오늘부터 15일후"."<br />";
echo date("Y-m-d",strtotime("+15 days", $time))." // 오늘부터 15일후"."<br />";
echo date("Y-m-d",strtotime("+15 days", strtotime("2013-08-02")))." // 특정일로부터 몇일 전후"."<br />";
echo date("Y-m-d",strtotime("+1 week", $time))." // 일주일 후"."<br />";
echo date("Y-m-d",strtotime("-1 month", $time))." // 한달 전"."<br />";
echo date("Y-m-d",strtotime("+1 month", $time))." // 한달 후"."<br />";
echo date("Y-m-d",strtotime("+6 month", $time))." // 6달 후"."<br />";
echo date("Y-m-d",strtotime("+12 month", $time))." // 12달 후"."<br />";
echo date("Y-m-d",strtotime("next Thursday", $time))." // 다음주 목요일"."<br />";
echo date("Y-m-d",strtotime("last Monday", $time))." // 지난 월요일"."<br />";
echo date("Y-m-d",strtotime("10 September 2015", $time))." // 2015년 9월 10일 "."<br />";
echo strtotime("+5 minutes")." // 현재 시간보다 5분 후"."<br />";
echo "<br />";
$week = array("일", "월", "화", "수", "목", "금", "토");
$week_string = $week[date("w")];
$output_today_message = sprintf('%s년 %s월 %s일 %s요일 ', date('Y'),date('m'),date('d'),$week_string);
echo $output_today_message;
?>
getdate() : 날짜와 시간을 배열을 통해 반환해준다.
아래 예제를 실행해보면 출력된 결과가 어떤 것들인지 알 수 있다.
<?php
$today = getdate();
foreach($today as $key => $val){
echo $key.":".$val.'<br />';
}
echo "오늘은 ".$today['year']."년 ".$today['mon']."월 ".$today['mday'];
?>
2015년 4월 13일로부터 10년 10일후를 다음과 같이 나타내라.
(2025-04-23:14:34:56)
(2015/04/23에서 10년 10일후를 yyyy-mm-dd: hh:mm:ss형식으로 표현)
$R = strtotime('+10 years, +10 days', mktime(14, 34, 56, 4, 13, 2015));
echo date('Y-m-d: H:i:s', $R);
'Web 프로그램 > PHP 응용 및 활용' 카테고리의 다른 글
문자열 숫자 표기 (0) | 2016.04.23 |
---|---|
킴스큐 함수 활용 (0) | 2016.04.19 |
[PHP] 설문조사 종료날짜 체크 (0) | 2015.05.27 |
[PHP] 쿠키와 세션, 그리고 보안 (0) | 2015.05.27 |
[PHP] 홈페이지 설정 정보 확인 (0) | 2015.04.28 |