Notice
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- WebView
- 안드로이드 gcm
- 안드로이드 푸쉬
- xe
- roundcube
- dovecot
- javascript
- PHP
- C#
- Android
- chart.js
- Mail Server
- curl
- FCM
- 설치
- mysql
- php 시큐어코딩
- 자동 생성
- 안드로이드
- html5
- 우분투
- android 효과음
- 자바스크립트
- 안드로이드 푸시
- soundpool
- not working
- php 취약점
- 폼메일
- UML
- C# IO
Archives
- Today
- Total
그러냐
[PHP] 두 날짜 차이 "0년 0개월 0일" 구하기 본문
반응형
▶ PHP 5.3 버전 이상이라면 아래처럼 간편하게 구할 수 있습니다.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
< ?php
$datetime1 = new DateTime('2002-12-25');
$datetime2 = new DateTime('2013-11-05');
$interval = $datetime1->diff($datetime2);
echo $interval->format('%y년 %m개월 %d일'); // 10년 10개월 11일
────────────────────────────────────────
< ?php
$datetime1 = date_create('2002-12-25');
$datetime2 = date_create('2013-11-05');
$interval = date_diff($datetime1, $datetime2);
echo $interval->format('%y년 %m개월 %d일'); // 10년 10개월 11일
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
- http://php.net/manual/en/book.datetime.php
▶ PHP 5.3 미만이라면 아래처럼 구하면 됩니다.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
< ?php
// 먼저 원하는 날짜를 할당합니다.
$date1 = '2002-12-25';
$date2 = '2013-11-05';
// 년, 월, 일을 별도의 변수에 할당합니다.
sscanf($date1,'%4d-%2d-%2d',$y1,$m1,$d1);
sscanf($date2,'%4d-%2d-%2d',$y2,$m2,$d2);
// 각각의 차를 구합니다.
$d3 = $d2 - $d1; // 5 - 25 = -20
$m3 = $m2 - $m1; // 11 - 12 = -1
$y3 = $y2 - $y1; // 2013 - 2002 = 11
// '일'이 음수면…
if ( $d3 < 0 ) {
$m3--; // '월'에서 1을 빼주고
$d3+= date('t',mktime(0,0,0,$m2-1,1,$y2)); // '일'에 전달의 총 일수를 더해줍니다.
// 다른 방법 1. date('t',strtotime($date2.' -1 month'))
// 다른 방법 2. 편하게 만년 달력을 이용 [생략]
// 다른 방법 3. 전달이 2월이면 윤년인지 계산해 28이나 29 더하고, 아니면 고정된 일수 더함.
}
// '월'이 음수면…
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
< ?php
$datetime1 = new DateTime('2002-12-25');
$datetime2 = new DateTime('2013-11-05');
$interval = $datetime1->diff($datetime2);
echo $interval->format('%y년 %m개월 %d일'); // 10년 10개월 11일
────────────────────────────────────────
< ?php
$datetime1 = date_create('2002-12-25');
$datetime2 = date_create('2013-11-05');
$interval = date_diff($datetime1, $datetime2);
echo $interval->format('%y년 %m개월 %d일'); // 10년 10개월 11일
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
- http://php.net/manual/en/book.datetime.php
▶ PHP 5.3 미만이라면 아래처럼 구하면 됩니다.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
< ?php
// 먼저 원하는 날짜를 할당합니다.
$date1 = '2002-12-25';
$date2 = '2013-11-05';
// 년, 월, 일을 별도의 변수에 할당합니다.
sscanf($date1,'%4d-%2d-%2d',$y1,$m1,$d1);
sscanf($date2,'%4d-%2d-%2d',$y2,$m2,$d2);
// 각각의 차를 구합니다.
$d3 = $d2 - $d1; // 5 - 25 = -20
$m3 = $m2 - $m1; // 11 - 12 = -1
$y3 = $y2 - $y1; // 2013 - 2002 = 11
// '일'이 음수면…
if ( $d3 < 0 ) {
$m3--; // '월'에서 1을 빼주고
$d3+= date('t',mktime(0,0,0,$m2-1,1,$y2)); // '일'에 전달의 총 일수를 더해줍니다.
// 다른 방법 1. date('t',strtotime($date2.' -1 month'))
// 다른 방법 2. 편하게 만년 달력을 이용 [생략]
// 다른 방법 3. 전달이 2월이면 윤년인지 계산해 28이나 29 더하고, 아니면 고정된 일수 더함.
}
// '월'이 음수면…
if ( $m3 < 0 ) {
$y3--; // '년'에서 1을 빼주고
$m3+= 12; // 12를 더하면 끝.
}
// '년'이 음수면 불량. 두 번째 날짜가 크면 됩니다. 함수화할 때 주의!
// 기타 예외 처리 생략합니다. 숙제!
echo $y3.'년 '.$m3.'개월 '.$d3.'일'; // 10년 10개월 11일
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+ sscanf()
- http://php.net/manual/kr/function.sscanf.php
- http://php.net/manual/en/function.sscanf.php
+ mktime()
- http://php.net/manual/en/function.mktime.php
+ date()
- http://php.net/manual/kr/function.date.php
- http://php.net/manual/en/function.date.php
$y3--; // '년'에서 1을 빼주고
$m3+= 12; // 12를 더하면 끝.
}
// '년'이 음수면 불량. 두 번째 날짜가 크면 됩니다. 함수화할 때 주의!
// 기타 예외 처리 생략합니다. 숙제!
echo $y3.'년 '.$m3.'개월 '.$d3.'일'; // 10년 10개월 11일
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+ sscanf()
- http://php.net/manual/kr/function.sscanf.php
- http://php.net/manual/en/function.sscanf.php
+ mktime()
- http://php.net/manual/en/function.mktime.php
+ date()
- http://php.net/manual/kr/function.date.php
- http://php.net/manual/en/function.date.php
반응형
'php' 카테고리의 다른 글
스팸글 자동등록 방지 오픈소스 - Securimage,captcha (0) | 2016.01.25 |
---|---|
php.ini 설정하기 (0) | 2016.01.25 |
[xe]모바일에서의 통합검색기능 (0) | 2016.01.25 |
FORM 서브밋 시 return false 의 중요성 (0) | 2016.01.25 |
날짜 연산 날짜 차이 일수 구하기 (0) | 2016.01.25 |