728x90

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);

블로그 이미지

Link2Me

,