>백엔드 개발 >PHP 튜토리얼 >PHP 시간 및 날짜 도구 클래스의 구현 코드

PHP 시간 및 날짜 도구 클래스의 구현 코드

WBOY
WBOY원래의
2016-07-25 08:56:041319검색
  1. /**
  2. * 기능: php 시간 및 날짜 도구 클래스
  3. * 편집자: bbs.it-home.org
  4. */
  5. DateTimeUtils::addDate('2013-12-01',1,'y ');
  6. DateTimeUtils::getWeekDay('2013/10/01','/');
  7. DateTimeUtils::isLeapYear('2013');
  8. DateTimeUtils::timeFromNow(strtotime("2013-10-26 14:15:13"));
  9. class DateTimeUtils {
  10. /**
  11. * 윤년을 확인하고, 윤년이면 true를 반환합니다. 2자리 연도 확인이 불가능합니다. 또한
  12. *는 율리우스력을 올바르게 처리합니다.
  13. * @param 정수 $year 확인할 연도
  14. * @return boolean 윤년이면 true
  15. */
  16. 공개 정적 함수 isLeapYear($year)
  17. {
  18. $year = self::digitCheck($year);
  19. if ($year % 4 != 0)
  20. return false;
  21. if ($year % 400 == 0)
  22. return true;
  23. // 그레고리력(>1582)인 경우 400으로 나눌 수 없는 세기는 윤약이 아닙니다.
  24. else if ($year > 1582 && $year % 100 == 0)
  25. return false;
  26. true를 반환합니다.
  27. }
  28. /**
  29. * 2자리 연도를 수정하세요. 모든 세기에 걸쳐 작동합니다.
  30. * 두 자리 숫자가 30년 이상 미래라면 이전 세기를 가정합니다.
  31. * @param 정수 $y 연도
  32. * @return 정수 두 자리 연도를 여러 자리로 변경
  33. */
  34. 보호된 정적 함수 digitCheck($y)
  35. {
  36. if ($y < 100){
  37. $yr = (정수) 날짜("Y");
  38. $century = (정수) ($yr /100);
  39. if ($yr 0 > 50) {
  40. $c1 = $century 1;
  41. $c0 = $세기;
  42. } else {
  43. $c1 = $세기;
  44. $c0 = $세기 - 1;
  45. }
  46. $c1 *= 100;
  47. // 두 자리 연도가 미래의 30년 미만이면 이번 세기로 설정합니다.
  48. // 그렇지 않으면 미래의 30년 이상이면 두 자리 연도를 이전 세기로 설정합니다.
  49. if (($y $c1) < $yr 30) $y = $y $c1;
  50. else $y = $y $c0*100;
  51. }
  52. $y를 반환합니다.
  53. }
  54. /**
  55. * 연도를 4자리로 표현하여 반환합니다.
  56. * @param 정수 $y 연도
  57. * @return 연도를 나타내는 4자리 정수
  58. */
  59. 공개 정적 함수 get4DigitYear($y)
  60. {
  61. return self::digitCheck($y);
  62. }
  63. /**
  64. * 연, 월, 일의 조합이 유효한지 확인합니다.
  65. * @param 정수 $y 연도
  66. * @param 정수 $m 월
  67. * @param 정수 $d 일
  68. * @return 부울 유효한 날짜인 경우 true, 의미 확인만 가능합니다.
  69. */
  70. 공개 정적 함수 isValidDate($y,$m,$d)
  71. {
  72. return checkdate($m, $d, $y );
  73. }
  74. 공개 정적 함수 checkDate($date, $separator = "-") { //检查日期是否합법일期
  75. $dateArr =explore ($separator, $date);
  76. return self::isValidDate ($dateArr[0], $dateArr[1], $dateArr[2]);
  77. }
  78. /**
  79. * 시, 분, 초가 유효한지 확인합니다.
  80. * @param 정수 $h 시간
  81. * @param 정수 $m 분
  82. * @param 정수 $s 초
  83. * @param boolean $hs24 시간이 0부터 23까지인지 여부(기본값) 또는 1부터 12까지.
  84. * @return boolean 유효한 날짜인 경우 true, 의미 확인만 가능합니다.
  85. * @since 1.0.5
  86. */
  87. 공개 정적 함수 isValidTime($h,$m,$s,$hs24=true)
  88. {
  89. if($hs24 && ( $h < 0 || $h > 23) || !$hs24 && ($h < 1 || $h > 12)) false를 반환합니다.
  90. if($m > 59 || $m < 0) return false;
  91. if($s > 59 || $s < 0) return false;
  92. true를 반환합니다.
  93. }
  94. 공개 정적 함수 checkTime($time, $separator = ":") { //检查时间是否합법时间
  95. $timeArr =Explode($separator, $time);
  96. return self::isValidTime($timeArr[0], $timeArr[1],$timeArr[2]);
  97. }
  98. 공개 정적 함수 addDate($date, $int, $unit = "d") { //日期的增加
  99. $value = array('y'=>'' , 'm'=>'', 'd'=>'');
  100. $dateArr = 폭발( "-", $date);
  101. if(array_key_exists($unit, $value)){
  102. $value[$unit] = $int;
  103. }else{
  104. false를 반환합니다.
  105. }
  106. 반환 날짜("Y-m-d", mktime (0, 0, 0, $dateArr[1] $value['m'], $dateArr[2] $value['d'], $dateArr [0] $value['y']));
  107. }
  108. public static function addDateTime($date, $int, $unit = "d") { //날짜 추가
  109. $value = array('y'=>'', 'm' = >'', 'd'=>'', 'h'=>'', 'i'=>'')
  110. $dateArr = preg_split ( "/-|s|:/ " , $date);
  111. if(array_key_exists($unit, $value)){
  112. $value[$unit] = $int;
  113. }else{
  114. return false; 🎜> 반환 날짜("Y-m-d H:i:s", mktime($dateArr[3] $value['h'], $dateArr[4] $value['i'], $dateArr[5], $ dateArr [1] $value['m'], $dateArr[2] $value['d'], $dateArr[0] $value['y']))
  115. }
  116. 공개 static function addDayTimestamp($ntime, $aday) { //현재 시간 이후의 일수를 구하며, 증가 단위는 1
  117. $dayst = 3600 * 24
  118. $oktime = $ntime ($aday; * $dayst );
  119. return $oktime;
  120. }
  121. public static function dateDiff($begin, $end, $unit = "d") { //시간 비교 함수, 차이 반환 두 날짜 사이의 초, 분, 시간 또는 일
  122. $diff = strtotime($end) - strtotime($begin)
  123. switch($unit)
  124. {
  125. case "y": $retval = bcdiv($diff, (60 * 60 * 24 * 365)); break;
  126. 케이스 "m": $retval($diff, (60 * 60 * 24 * 30)); > 케이스 "w": $retval = bcdiv($diff, (60 * 60 * 24 * 7)); break
  127. 케이스 "d": $retval = bcdiv($diff, (60 * 60 * 24) ); 중단;
  128. 사례 "h": $retval = bcdiv(60 * 60)) 중단
  129. 사례 "i": $retval = bcdiv, 60);
  130. 케이스 "s": $retval = $diff; break;
  131. }
  132. return $retval; }
  133. 공개 정적 함수 getWeekDay($date, $separator = "- ") { //주어진 날짜의 요일 계산
  134. $dateArr =explore ($separator, $date);
  135. return date ("w", mktime ( 0, 0, 0, $dateArr [ 1], $dateArr[2], $dateArr[0]));
  136. }
  137. public static function timeFromNow($dateline) { //날짜를 XX일 XX년으로 표시합니다. 전
  138. if(empty($dateline)) return false
  139. $seconds = time() - $dateline
  140. if($seconds < 60){
  141. return "1분 전";
  142. }elseif($seconds < 3600){
  143. 반환 층($seconds/60)."분 전"
  144. }elseif($seconds < 24*3600){
  145. 반환 층 ($초/3600)."시간 전";
  146. }elseif($seconds < 48*3600){
  147. 반환 날짜("어제 H:i", $dateline).""; }else{
  148. return date('Y-m-d', $dateline);
  149. }
  150. }
  151. public static function transDateToChs($date) {
  152. if (empty ($ date)) return 'today';
  153. date_default_timezone_set('PRC');
  154. $dates = date ('m, d, year Y', strtotime ($date)); 🎜> }
  155. // 08/31/2004 => 2004-08-31
  156. 공개 정적 함수 TransDateUI($datestr, $type = 'Y-m-d') {
  157. if ( $datestr = = Null)
  158. Null 반환
  159. $target = $datestr
  160. $arr_date = preg_split ( "///", $target); ;
  161. $daystr = $arr_date[1]
  162. $yearstr = $arr_date[2]
  163. $result = 날짜($type, mktime (0, 0, 0, $monthstr, $daystr, $yearstr) );
  164. return $result;
  165. }
  166. // 2004년 12월 20일 오전 10:55 => 정적 함수 TransDateTimeUI ($datestr, $type = 'Y-m-d H:i:s') {
  167. if ($datestr == Null)
  168. return Null;
  169. $target = $datestr;
  170. $ arr_date = preg_split ( "//|s|:/", $target);
  171. $monthstr = $arr_date[0];
  172. $daystr = $arr_date[1];
  173. $yearstr = $arr_date [2] ;
  174. $hourstr = $arr_date[3];
  175. $ Minutesstr = $arr_date[4];
  176. $result = 날짜($type, mktime ($hourstr, $ Minutesstr, 0, $ Monthstr, $ daystr, $yearstr));
  177. return $result;
  178. }
  179. }
  180. ?>
  181. 코드 복사
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.