1. 특정 요일이 무슨 요일인지 확인
- /**
- * 특정 요일이 무슨 요일인지 확인
- * @param $date format 'YYYY-mm-dd' 형식이 틀리면 false를 반환합니다. 해당 날짜의 월요일부터 일요일까지
- */
- function get_weekday($date){
- $date_arr =explod('-', Trim($date));
- if(!checkdate(intval($date_arr[1]), intval($date_arr[2]), intval($date_arr[0] ))){
- false 반환;
- }
- 스위치 (date('w',strtotime($date))) {
- 케이스 '0':
- $weekday = 'day' ;
- break;
- 케이스 '1':
- $weekday = 'one';
- break;
- 케이스 '2':
- $weekday = 'two';
- break;
- 케이스 '3':
- $weekday = '3';
- break;
- 케이스 '4':
- $weekday = '4';
- break;
- 사례 '5':
- $weekday = '5';
- 휴식;
- 사례 '6':
- $weekday = '6';
- 휴식;
- 기본값:
- return false ;
- break;
- }
- return $weekday;
- }
- //demo_call
- $day = '2014-02-16';
- if( get_weekday( $day)){
- $test1 = get_weekday($day);
- echo 'week' .
- }else{
- echo ' 날짜 오류';
- }
코드 복사
2. 날짜 형식이 올바른지 확인
- /* *
- * 날짜 형식이 올바른지 확인
- * yyyy-mm-dd | yyyy-mm-dd hh:ii:ss 형식 확인
- * @param $tdate 날짜 확인
- * @ param $dateformat 결정할 날짜 형식은 "Y-m-d" 또는 "Y-m-d H:i:s"입니다.
- */
- function is_date($tdate,$dateformat="Y-m-d"){
- $tdate = Trim($tdate);
- //타임스탬프로 변환할 수 없습니다
- if( !is_numeric(strtotime($tdate)) ) return false;
- //날짜가 존재하는지 확인&& 연, 월, 일의 형식은 Y-m-d입니다
- $tdate_date =explore(" ", $tdate );
- $tdate_time = 폭발("-", $tdate_date[0]);
- if(isset($tdate_time[0]))
- $year = $tdate_time[0];
- else
- false 반환
- if(isset($tdate_time[1]))
- $month = $tdate_time[1];
- else
- false 반환;
- if(isset( $tdate_time[2]))
- $day = $tdate_time[2];
- else
- return false;
- if( !checkdate($month, $day, $year) ) return false;
- //날짜를 지정된 형식인지 판단
- $tmpdate = date($dateformat,strtotime($tdate));
- if( $tmpdate==$tdate )
- return true ;
- else
- return false
- }
- /**데모 사용*/
- $tdate = '2014-02-16 11:25:33';
- // $tdate = '2014-02-16';
- //$tdate = '2014.02.16';
- //$tdate = 'asdqwe123123sadsad';
- $dateformat = 'Y-m-d';
- //$dateformat = "Y-m-d H: i:s";
- if( is_date($tdate,$dateformat) ){
- echo 'true';
- }else{
- echo ' false';
- }
코드 복사
3. 두 날짜 사이의 모든 날짜를 반환합니다. 날짜
- /**
- * 두 날짜 사이의 모든 날짜를 반환합니다
- * is_date()에 따라 다름
- * @param $tdate1 $tdate2는 'Y-m-d' 형식이어야 합니다
- * $tdate1<=$tdate2
- * 문자열 반환
- * /
- function getAllDateBetDays($tdate1,$tdate2){
- $dateformat = 'Y-m-d';
- if( !is_date($tdate1,$dateformat) ) return "날짜 매개변수 1의 형식이 잘못되었습니다.";
- if( !is_date($tdate2,$dateformat) ) return "날짜 매개변수 2의 형식이 잘못되었습니다.";
- if( $tdate1>$tdate2 ) return "날짜 매개변수 2 날짜 매개변수 1보다 크거나 같아야 합니다.";
- $days = "'" . $tdate1 . "'";
- while( $tdate1<$tdate2 ){
- $days .= "' " . date("Y-m-d",strtotime($tdate1) 86400 ) . "'";
- $tdate1 = date("Y-m-d",strtotime($tdate1) 86400);
- }
- $days 반환 ;
- }
- /**use_demo */
- $tdate1 = '2014-02-01';
- //$tdate1 = 'asdqwe123123sadsad';
- $tdate2 = '2014 -02-30';
- echo getAllDateBetDays($tdate1 ,$tdate2);
코드 복사 4. 월 형식이 올바른지 확인 - /**
- * 월 형식이 올바른지 확인
- * yyyy-mm 형식 확인
- * @param $tmonth 월을 확인하려면
- * @param $monformat 확인할 월 날짜 "Y-m"
- */
- 함수 is_month($tmonth,$monformat="Y-m"){
- $tmonth = Trim($tmonth);
- //타임스탬프로 변환할 수 없습니다
- if( !is_numeric(strtotime($tmonth)) ) return false;
- //월이 지정된 형식인지 판단
- $tmpmonth = date( $monformat,strtotime($tmonth));
- if( $tmpmonth== $tmonth )
- return true;
- else
- return false;
- }
- /**use_demo*/
- //$month = '02.16';
- $ Month = '2014-02';
- $monformat = "Y-m";
- if( is_month($month,$monformat) )
- //if( is_month($month) )
- echo ' true';
- else
- echo 'false';
코드 복사5. 두 달 사이의 모든 달 반환 - /**
- * 두 달 사이의 모든 달을 반환합니다
- * @param $tmonth1 $tmonth2는 $tmonth1<$tmonth2여야 합니다
- * 반환 문자열
- */
- function gatAllMonBetMons($tmonth1,$tmonth2){
- $dateformat = "Y-m";
- if( !is_month($tmonth1,$dateformat) ) return "월 매개변수 1의 형식이 잘못되었습니다.";
- if( !is_month($tmonth2,$dateformat) ) return " 월 매개변수 2의 형식이 잘못되었습니다.";
- if( $tmonth1>$tmonth2 ) return "월 매개변수 2는 월 매개변수 1보다 크거나 같아야 합니다.";
- $months = "'" . "'";
- while( $tmonth1<$tmonth2 ){
- $months .= "'" . date("Y-m",strtotime($tmonth1 . "-01" . " 1개월")) . "'";
- $tmonth1 = date("Y-m",strtotime($tmonth1 . "-01" . " 1개월"));
- }
- return $months;
- }
- /**use_demo*/
- $month1 = '2013-01';
- $month2 = '2014-02';
- echo gatAllMonBetMons($month1,$month2);
코드 복사6. 현재 시점을 기준으로 날짜를 가져옵니다 - /**
- * 현재 시점을 기준으로 날짜 가져오기
- * @param $needle "0": 모든 날짜 값 "1": 어제 "2": 어제 전날 "3": 지난주 오늘 "4": 지난달 오늘" 5":내일
- * 전월의 일수가 이번 달의 일수보다 적고, 일수가 누락된 경우 기본적으로 전월 말일을 반환
- * 해당 날짜 값을 json 형식으로 반환
- */
- function getNeedDate($needle) {
- $tdate = date("Y-m-d",time());
- $NeedDate = array();
- $NeedDate[1] = date("Y-m-d",time()) ",time()-86400);
- $NeedDate[2] = date("Y-m-d",time()-86400*2);
- $NeedDate[3] = date("Y-m-d",time( )-86400*7);
- //지난달의 일수
- $lmd_num = date("t",strtotime( date("Y-m-d",time()) . "-1개월" ) );
- //오늘이 월일 Day
- $tod_num = date("j",time());
- if($tod_num<=$lmd_num){
- $NeedDate [4] = date("Y-m",strtotime( date( "Y-m-d",time()) . "-1개월" )) . $tod_num;
- }else{
- $NeedDate[ 4] = date("Y-m",strtotime( date(" Y-m-d",time()) . "-1개월" )) . $lmd_num;
- }
- $NeedDate[5] = date("Y-m-d",time() 86400);
- 스위치($needle) {
- 케이스 0:
- return json_encode($NeedDate);
- break;
- 케이스 1:
- return json_encode($NeedDate[1]);
- break;
- 사례 2:
- return json_encode($NeedDate[2]);
- break;
- 사례 3:
- return json_encode($NeedDate[3]);
- break;
- 사례 4:
- return json_encode($NeedDate[4]);
- break;
- 기본값:
- return false;
- break;
- }
- }
- /**use_demo*/
- var_dump(json_decode(getNeedDate(0),true));
- var_dump(json_decode(getNeedDate(4)) ,true));
코드 복사7. 윤년 판정 - /**
- * 윤년 판정
- * 윤년 계산:
- * 1. 세기년은 400으로 나누어질 수 있습니다
- * 2. 평년은 4로 나누어질 수 있지만, 100으로는 나누어지지 않습니다
- * @param $년
- */
- 함수 isBissextile($year){
- $year = intval(trim($year));
- $preg = "/^d{4,}$/";
- if ( !preg_match($preg, $year) )
- false 반환;
- if( $year@0==0 ){
- true 반환;
- }elseif( $year%4==0 && $연도 0!=0 ){
- true 반환 ;
- }else{
- false 반환;
- }
- }
- /**데모 사용*/
- $ year = '2012';
- if( isBissextile($ year) )
- echo 'true';
- else
- echo 'false';
코드 복사8. 두 날짜 사이 간격 일 - /**
- * 두 날짜 사이의 일수
- * is_date에 따라 다름
- * @param $tdate1 $tdate2 $tdate1<=$tdate2 dateformat:"Y-m-d"
- */
- function getIntervalDays($tdate1,$tdate2){
- $dateformat = 'Y-m-d';
- if( !is_date($tdate1,$dateformat) ) return "날짜 매개변수 1의 형식이 잘못되었습니다.";
- if( !is_date($tdate2, $dateformat) ) return "날짜 매개변수 2의 형식이 잘못되었습니다.";
- if( $tdate1>$tdate2 ) return "날짜 매개변수 2는 날짜 매개변수 1보다 크거나 같아야 합니다.";
- $days = ceil((strtotime($tdate2)-strtotime($tdate1))/86400);
- return $days;
- }
- /**데모 사용*/
- $tdate1 = '2014- 01-01';
- $tdate2 = '2014-01-16';
- echo getIntervalDays($tdate1,$tdate2);
코드 복사
|