首頁  >  文章  >  後端開發  >  php時間日期工具類別的實作程式碼

php時間日期工具類別的實作程式碼

WBOY
WBOY原創
2016-07-25 08:56:041250瀏覽
  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(20133" -26 14:15:13"));
  9. class DateTimeUtils {
  10. /**
  11. * 檢查閏年,如果是則回傳 true。沒有 2 位數年份支票。另外
  12. * 正確處理儒略曆。
  13. * @param integer $year 要檢查的年份
  14. * @return boolean true 如果是閏年
  15. */
  16. public static function isLeapYear($year)
  17. {
  18. $year = apYear($year)
  19. {
  20. $year = % ::digitCheck($year);
  21. if ($year % 4 != 0)
  22. 回傳false;
  23. if ($year % 400 == 0)
  24. 回傳true; 🎜> // 如果公曆(>1582),不能被400 整除的世紀不是閏
  25. else if ($year > 1582 && $year % 100 == 0)
  26. return false
  27. 返回;true;
  28. }
  29. /**
  30. * 修正 2 位數年份。適用於任何世紀。
  31. * 假設如果 2 位數字是未來 30 年以上,則為上個世紀。
  32. * @param整數$y年份
  33. * @return整數將兩位數年份改為多位數字
  34. */
  35. 受保護的靜態函數digitCheck($y)
  36. {
  37. if ($y $ yr =(整數)日期(“Y”);
  38. $世紀= (整數) ($yr /100);
  39. if ($yr%100 > 50) {
  40. $c1 = $ century + 1;
  41. $c0 = $世紀;
  42. } else {
  43. $c1 = $世紀;
  44. $c0 = $世紀- 1;
  45. }
  46. $c1 * = 100;
  47. // 如果2 位元年份小於未來30 年,則將其設為本世紀
  48. // 否則,如果未來超過30 年,則將2 位元年份設為上世紀。
  49. if (($y + $c1) 否則$y = $y + $c0*100;
  50. }
  51. 回傳$y;
  52. }
  53. /**
  54. * 傳回年份的 4 位數字表示。
  55. * @param 整數 $y 年
  56. * @return 年份的 4 位數字表示
  57. */
  58. public static function get4DigitYear($y)
  59. {
  60. return self::digitCheck($y); 🎜> }
  61. /**
  62. * 檢查年、月、日的組合是否有效。
  63. * @param 整數 $y 年
  64. * @param 整數 $m 月
  65. * @param 整數 $d 日
  66. * @return boolean true 如果日期有效,只需進行語意檢查。
  67. */
  68. public static function isValidDate($y,$m,$d)
  69. {
  70. return checkdate($m, $d, $y ) ;
  71. }
  72. public static function checkDate($date, $separator = "-") { //檢查日期是否合法日期
  73. $dateArr =explode($separator, $date);
  74. return self::isValidDate ($dateArr[0], $dateArr[1], $dateArr[2]);
  75. }
  76. /**
  77. * 檢查小時、分鐘、秒是否有效。
  78. * @param integer $h 小時
  79. * @param integer $m 分鐘
  80. * @param integer $s 秒
  81. * @param boolean $hs24 小時是否應為0 到23(預設)或1 到12。
  82. * @return boolean true 如果日期有效,請僅進行語意檢查。
  83. * @since 1.0.5
  84. */
  85. public static function isValidTime(>*/
  86. public static function isValidTime(>*/
  87. public static function isValidTime(>*/
  88. public static function isValidTime(>*/
  89. public static function isValidTime(>*/
  90. public static function isValidTime( $h,$m,$s,$hs24=true)
  91. {
  92. if($hs24 && ( $h 23) || !$hs24 && ($h 12)) 回傳false;
  93. if($m > 59 || $m if($m > 59 || $m if($s > 59 || $s 回傳true;
  94. }
  95. public static function checkTime($time, $separator = ":") { //檢查時間是否合法時間
  96. $timeArr =explode($separator, $time );
  97. return self::isValidTime($timeArr[0], $timeArr[1],$timeArr[2]);
  98. }
  99. public static function addDate($date, $int , $unit = "d") { //日期的增加
  100. $value = array('y'=>'' , 'm'=>'', 'd'=>'');
  101. $dateArr =explode("-", $date);
  102. if(array_key_exists($unit, $value)){ $value[$unit] = $int; }else{ 回傳false; } 回傳日期("Y-m-d", mktime (0, 0, 0, $dateArr[1] + $value['m'], $dateArr[2] + $value['d '], $dateArr[0] +$value['y'])); }
  103. public static function addDateTime($date, $int, $unit = "d") { //日期的增加
  104. $value = array('y'=>'', 'm'= >'', 'd'=>'', 'h'=>'', 'i'=>'');
  105. $dateArr = preg_split ( "/-|s|:/", $date) ;
  106. if(array_key_exists($unit, $value)){
  107. $value[$unit] = $int;
  108. }else{
  109. return false;
  110. }
  111. return date ("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']));
  112. }
  113. public static function addDayTimestamp($ntime, $aday) { //取目前時間後幾天,天數增加單位為1
  114. $dayst = 3600 * 24;
  115. $oktime = $ntime + ($aday * $ dayst);
  116. return $oktime;
  117. }
  118. public static function dateDiff($begin, $end, $unit = "d") { //時間比較函數,回傳兩個日期相差幾秒鐘、幾分鐘、幾小時或幾天
  119. $diff = strtotime($end) - strtotime($begin);
  120. switch($unit)
  121. {
  122. case "y": $ retval = bcdiv($diff, (60 * 60 * 24 * 365)); break;
  123. case "m": $retval = bcdiv($diff, (60 * 60 * 24 * 30)); break;
  124. case "w": $retval = bcdiv($diff, (60 * 60 * 24 * 7)); break;
  125. case "d": $retval = bcdiv($diff, (60 * 60 * 24 )); break;
  126. case "h": $retval = bcdiv($diff, (60 * 60)); break;
  127. case "i": $retval = bcdiv($diff, 60); break ;
  128. case "s": $retval = $diff; break;
  129. }
  130. return $retval;
  131. }
  132. public static function getWeekDay($date, $separator = " -") { //計算出給定的日期是星期幾
  133. $dateArr = explode ($separator, $date);
  134. return date ("w", mktime ( 0, 0, 0, $dateArr [1], $dateArr[2], $dateArr[0]));
  135. }
  136. public static function timeFromNow($dateline) { //讓日期顯示為:XX天XX年以前
  137. if(empty($dateline)) return false;
  138. $seconds = time() - $dateline;
  139. if($seconds return "1分鐘前";
  140. }elseif($seconds return floor($seconds/60)."分鐘前";
  141. }elseif($seconds return floor($seconds }elseif($seconds return date("昨天H:i", $dateline)."";
  142. }else{
  143. return date('Y-m-d', $dateline);
  144. }
  145. }
  146. public static function transDateToChs($date) {
  147. if (empty ($date)) return ' ';
  148. date_default_timezone_set('PRC');
  149. $dates = date ('Y年m月d日', strtotime ($date));
  150. return $dates;
  151. }
  152. // 08/31/2004 => 2004-08-31
  153. public static function TransDateUI($datestr, $type = 'Y-m-d') {
  154. if ($datestr == Null)
  155. return Null;
  156. $target = $datestr;
  157. $arr_date = preg_split ( "///", $target);
  158. $monthstr = $arr_date[0];
  159. $day🎜> $monthstr = $arr_date[0];
  160. $daystr = $arr_date[1];
  161. $yearstr = $arr_date[2];
  162. $result = date ($type, mktime (0, 0, 0, $monthstr, $daystr, $yearstr));
  163. return $result;
  164. }
  165. // 12/20/2004 10:55 AM => 2004-12-20 10:55:00
  166. public static function 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 = date ($type, mktime ($hourstr, $minutesstr, 0, $monthstr, $daystr, $yearstr) );
  177. return $result;
  178. }
  179. }
?>
複製程式碼


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn