>백엔드 개발 >PHP 튜토리얼 >PHP 시간 공통 연산 함수

PHP 시간 공통 연산 함수

WBOY
WBOY원래의
2016-07-25 09:12:28997검색

1. 특정 요일이 무슨 요일인지 확인

  1. /**
  2. * 특정 요일이 무슨 요일인지 확인
  3. * @param $date format 'YYYY-mm-dd' 형식이 틀리면 false를 반환합니다. 해당 날짜의 월요일부터 일요일까지
  4. */
  5. function get_weekday($date){
  6. $date_arr =explod('-', Trim($date));
  7. if(!checkdate(intval($date_arr[1]), intval($date_arr[2]), intval($date_arr[0] ))){
  8. false 반환;
  9. }
  10. 스위치 (date('w',strtotime($date))) {
  11. 케이스 '0':
  12. $weekday = 'day' ;
  13. break;
  14. 케이스 '1':
  15. $weekday = 'one';
  16. break;
  17. 케이스 '2':
  18. $weekday = 'two';
  19. break;
  20. 케이스 '3':
  21. $weekday = '3';
  22. break;
  23. 케이스 '4':
  24. $weekday = '4';
  25. break;
  26. 사례 '5':
  27. $weekday = '5';
  28. 휴식;
  29. 사례 '6':
  30. $weekday = '6';
  31. 휴식;
  32. 기본값:
  33. return false ;
  34. break;
  35. }
  36. return $weekday;
  37. }
  38. //demo_call
  39. $day = '2014-02-16';
  40. if( get_weekday( $day)){
  41. $test1 = get_weekday($day);
  42. echo 'week' .
  43. }else{
  44. echo ' 날짜 오류';
  45. }
코드 복사

2. 날짜 형식이 올바른지 확인

  1. /* *
  2. * 날짜 형식이 올바른지 확인
  3. * yyyy-mm-dd | yyyy-mm-dd hh:ii:ss 형식 확인
  4. * @param $tdate 날짜 확인
  5. * @ param $dateformat 결정할 날짜 형식은 "Y-m-d" 또는 "Y-m-d H:i:s"입니다.
  6. */
  7. function is_date($tdate,$dateformat="Y-m-d"){
  8. $tdate = Trim($tdate);
  9. //타임스탬프로 변환할 수 없습니다
  10. if( !is_numeric(strtotime($tdate)) ) return false;
  11. //날짜가 존재하는지 확인&& 연, 월, 일의 형식은 Y-m-d입니다
  12. $tdate_date =explore(" ", $tdate );
  13. $tdate_time = 폭발("-", $tdate_date[0]);
  14. if(isset($tdate_time[0]))
  15. $year = $tdate_time[0];
  16. else
  17. false 반환
  18. if(isset($tdate_time[1]))
  19. $month = $tdate_time[1];
  20. else
  21. false 반환;
  22. if(isset( $tdate_time[2]))
  23. $day = $tdate_time[2];
  24. else
  25. return false;
  26. if( !checkdate($month, $day, $year) ) return false;
  27. //날짜를 지정된 형식인지 판단
  28. $tmpdate = date($dateformat,strtotime($tdate));
  29. if( $tmpdate==$tdate )
  30. return true ;
  31. else
  32. return false
  33. }
  34. /**데모 사용*/
  35. $tdate = '2014-02-16 11:25:33';
  36. // $tdate = '2014-02-16';
  37. //$tdate = '2014.02.16';
  38. //$tdate = 'asdqwe123123sadsad';
  39. $dateformat = 'Y-m-d';
  40. //$dateformat = "Y-m-d H: i:s";
  41. if( is_date($tdate,$dateformat) ){
  42. echo 'true';
  43. }else{
  44. echo ' false';
  45. }
코드 복사

3. 두 날짜 사이의 모든 날짜를 반환합니다. 날짜

  1. /**
  2. * 두 날짜 사이의 모든 날짜를 반환합니다
  3. * is_date()에 따라 다름
  4. * @param $tdate1 $tdate2는 'Y-m-d' 형식이어야 합니다
  5. * $tdate1<=$tdate2
  6. * 문자열 반환
  7. * /
  8. function getAllDateBetDays($tdate1,$tdate2){
  9. $dateformat = 'Y-m-d';
  10. if( !is_date($tdate1,$dateformat) ) return "날짜 매개변수 1의 형식이 잘못되었습니다.";
  11. if( !is_date($tdate2,$dateformat) ) return "날짜 매개변수 2의 형식이 잘못되었습니다.";
  12. if( $tdate1>$tdate2 ) return "날짜 매개변수 2 날짜 매개변수 1보다 크거나 같아야 합니다.";
  13. $days = "'" . $tdate1 . "'";
  14. while( $tdate1<$tdate2 ){
  15. $days .= "' " . date("Y-m-d",strtotime($tdate1) 86400 ) . "'";
  16. $tdate1 = date("Y-m-d",strtotime($tdate1) 86400);
  17. }
  18. $days 반환 ;
  19. }
  20. /**use_demo */
  21. $tdate1 = '2014-02-01';
  22. //$tdate1 = 'asdqwe123123sadsad';
  23. $tdate2 = '2014 -02-30';
  24. echo getAllDateBetDays($tdate1 ,$tdate2);
코드 복사

4. 월 형식이 올바른지 확인

  1. /**
  2. * 월 형식이 올바른지 확인
  3. * yyyy-mm 형식 확인
  4. * @param $tmonth 월을 확인하려면
  5. * @param $monformat 확인할 월 날짜 "Y-m"
  6. */
  7. 함수 is_month($tmonth,$monformat="Y-m"){
  8. $tmonth = Trim($tmonth);
  9. //타임스탬프로 변환할 수 없습니다
  10. if( !is_numeric(strtotime($tmonth)) ) return false;
  11. //월이 지정된 형식인지 판단
  12. $tmpmonth = date( $monformat,strtotime($tmonth));
  13. if( $tmpmonth== $tmonth )
  14. return true;
  15. else
  16. return false;
  17. }
  18. /**use_demo*/
  19. //$month = '02.16';
  20. $ Month = '2014-02';
  21. $monformat = "Y-m";
  22. if( is_month($month,$monformat) )
  23. //if( is_month($month) )
  24. echo ' true';
  25. else
  26. echo 'false';
코드 복사

5. 두 달 사이의 모든 달 반환

  1. /**
  2. * 두 달 사이의 모든 달을 반환합니다
  3. * @param $tmonth1 $tmonth2는 $tmonth1<$tmonth2여야 합니다
  4. * 반환 문자열
  5. */
  6. function gatAllMonBetMons($tmonth1,$tmonth2){
  7. $dateformat = "Y-m";
  8. if( !is_month($tmonth1,$dateformat) ) return "월 매개변수 1의 형식이 잘못되었습니다.";
  9. if( !is_month($tmonth2,$dateformat) ) return " 월 매개변수 2의 형식이 잘못되었습니다.";
  10. if( $tmonth1>$tmonth2 ) return "월 매개변수 2는 월 매개변수 1보다 크거나 같아야 합니다.";
  11. $months = "'" . "'";
  12. while( $tmonth1<$tmonth2 ){
  13. $months .= "'" . date("Y-m",strtotime($tmonth1 . "-01" . " 1개월")) . "'";
  14. $tmonth1 = date("Y-m",strtotime($tmonth1 . "-01" . " 1개월"));
  15. }
  16. return $months;
  17. }
  18. /**use_demo*/
  19. $month1 = '2013-01';
  20. $month2 = '2014-02';
  21. echo gatAllMonBetMons($month1,$month2);
코드 복사

6. 현재 시점을 기준으로 날짜를 가져옵니다

  1. /**
  2. * 현재 시점을 기준으로 날짜 가져오기
  3. * @param $needle "0": 모든 날짜 값 ​​"1": 어제 "2": 어제 전날 "3": 지난주 오늘 "4": 지난달 오늘" 5":내일
  4. * 전월의 일수가 이번 달의 일수보다 적고, 일수가 누락된 경우 기본적으로 전월 말일을 반환
  5. * 해당 날짜 값을 json 형식으로 반환
  6. */
  7. function getNeedDate($needle) {
  8. $tdate = date("Y-m-d",time());
  9. $NeedDate = array();
  10. $NeedDate[1] = date("Y-m-d",time()) ",time()-86400);
  11. $NeedDate[2] = date("Y-m-d",time()-86400*2);
  12. $NeedDate[3] = date("Y-m-d",time( )-86400*7);
  13. //지난달의 일수
  14. $lmd_num = date("t",strtotime( date("Y-m-d",time()) . "-1개월" ) );
  15. //오늘이 월일 Day
  16. $tod_num = date("j",time());
  17. if($tod_num<=$lmd_num){
  18. $NeedDate [4] = date("Y-m",strtotime( date( "Y-m-d",time()) . "-1개월" )) . $tod_num;
  19. }else{
  20. $NeedDate[ 4] = date("Y-m",strtotime( date(" Y-m-d",time()) . "-1개월" )) . $lmd_num;
  21. }
  22. $NeedDate[5] = date("Y-m-d",time() 86400);
  23. 스위치($needle) {
  24. 케이스 0:
  25. return json_encode($NeedDate);
  26. break;
  27. 케이스 1:
  28. return json_encode($NeedDate[1]);
  29. break;
  30. 사례 2:
  31. return json_encode($NeedDate[2]);
  32. break;
  33. 사례 3:
  34. return json_encode($NeedDate[3]);
  35. break;
  36. 사례 4:
  37. return json_encode($NeedDate[4]);
  38. break;
  39. 기본값:
  40. return false;
  41. break;
  42. }
  43. }
  44. /**use_demo*/
  45. var_dump(json_decode(getNeedDate(0),true));
  46. var_dump(json_decode(getNeedDate(4)) ,true));
코드 복사

7. 윤년 판정

  1. /**
  2. * 윤년 판정
  3. * 윤년 계산:
  4. * 1. 세기년은 400으로 나누어질 수 있습니다
  5. * 2. 평년은 4로 나누어질 수 있지만, 100으로는 나누어지지 않습니다
  6. * @param $년
  7. */
  8. 함수 isBissextile($year){
  9. $year = intval(trim($year));
  10. $preg = "/^d{4,}$/";
  11. if ( !preg_match($preg, $year) )
  12. false 반환;
  13. if( $year@0==0 ){
  14. true 반환;
  15. }elseif( $year%4==0 && $연도 0!=0 ){
  16. true 반환 ;
  17. }else{
  18. false 반환;
  19. }
  20. }
  21. /**데모 사용*/
  22. $ year = '2012';
  23. if( isBissextile($ year) )
  24. echo 'true';
  25. else
  26. echo 'false';
코드 복사

8. 두 날짜 사이 간격 일

  1. /**
  2. * 두 날짜 사이의 일수
  3. * is_date에 따라 다름
  4. * @param $tdate1 $tdate2 $tdate1<=$tdate2 dateformat:"Y-m-d"
  5. */
  6. function getIntervalDays($tdate1,$tdate2){
  7. $dateformat = 'Y-m-d';
  8. if( !is_date($tdate1,$dateformat) ) return "날짜 매개변수 1의 형식이 잘못되었습니다.";
  9. if( !is_date($tdate2, $dateformat) ) return "날짜 매개변수 2의 형식이 잘못되었습니다.";
  10. if( $tdate1>$tdate2 ) return "날짜 매개변수 2는 날짜 매개변수 1보다 크거나 같아야 합니다.";
  11. $days = ceil((strtotime($tdate2)-strtotime($tdate1))/86400);
  12. return $days;
  13. }
  14. /**데모 사용*/
  15. $tdate1 = '2014- 01-01';
  16. $tdate2 = '2014-01-16';
  17. echo getIntervalDays($tdate1,$tdate2);
코드 복사



성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.