ホームページ  >  記事  >  バックエンド開発  >  PHP日時ツールクラスの実装コード

PHP日時ツールクラスの実装コード

WBOY
WBOYオリジナル
2016-07-25 08:56:041249ブラウズ
  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::isLeap Year('2013');
  8. DateTimeUtils::timeFromNow(strtotime("2013-10-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 isLeap Year($year)
  17. {
  18. $year = self::digitCheck($year);
  19. if ($year % 4 != 0)
  20. false を返します。
  21. if ($year % 400 == 0)
  22. true を返します。
  23. // グレゴリオ暦 (>1582) の場合、400 で割り切れない世紀は閏ではありません
  24. else if ($year > 1582 && $year % 100 == 0)
  25. return false;
  26. true を返します。
  27. }
  28. /**
  29. * 2桁の年を修正します。どの世紀でも機能します。
  30. * 2 桁が 30 年以上先の場合、前世紀であると仮定します。
  31. * @param integer $y year
  32. * @return integer 2 桁の年を複数の桁に変更します
  33. */
  34. 保護された静的関数 digitCheck($y)
  35. {
  36. if ($y < 100){
  37. $yr = (整数) date("Y");
  38. $century = (整数) ($yr /100);
  39. if ($yr%100 > 50) {
  40. $c1 = $century + 1;
  41. $c0 = $century;
  42. } else {
  43. $c1 = $century;
  44. $c0 = $century - 1;
  45. }
  46. $c1 *= 100;
  47. // 2 桁の年が将来 30 年未満の場合は、今世紀に設定します
  48. // それ以外の場合、30 年以上先の場合は、2 桁の年を前世紀に設定します。
  49. if (($y + $c1) < $yr+30) $y = $y + $c1;
  50. それ以外の場合 $y = $y + $c0*100;
  51. }
  52. $y を返します。
  53. }
  54. /**
  55. * 西暦の 4 桁表現を返します。
  56. * @param integer $y year
  57. * @return integer 年の 4 桁表現
  58. */
  59. public static function get4Digit Year($y)
  60. {
  61. return self::digitCheck($y);
  62. }
  63. /**
  64. * 年、月、日の組み合わせが有効かどうかを確認します。
  65. * @param integer $y 年
  66. * @param integer $m 月
  67. * @param integer $d 日
  68. * @return boolean 有効な日付の場合は true、意味チェックのみ。
  69. */
  70. public static function isValidDate($y,$m,$d)
  71. {
  72. return checkdate($m, $d, $y);
  73. }
  74. public static function checkDate($date, $separator = "-") { //检查日期の有無 合法日期
  75. $dateArr =explode ($separator, $date);
  76. return self::isValidDate ($dateArr[0], $dateArr[1], $dateArr[2]);
  77. }
  78. /**
  79. * 時、分、秒が有効かどうかを確認します。
  80. * @param integer $h 時間
  81. * @param integer $m 分
  82. * @param integer $s 秒
  83. * @param boolean $hs24 時間を 0 ~ 23 (デフォルト) にするか、1 ~ 12 にするか。
  84. * @有効な日付の場合はブール値 true を返し、セマンティック チェックのみを行います。
  85. * @1.0.5 以降
  86. */
  87. public static function 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) false を返します。
  91. if($s > 59 || $s < 0) false を返します。
  92. true を返します。
  93. }
  94. public static function checkTime($time, $separator = ":") { //检查時間が合法かどうか
  95. $timeArr =explode($separator, $time);
  96. return self::isValidTime($timeArr[0], $timeArr[1],$timeArr[2]);
  97. }
  98. public static function 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. return date ("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); array_key_exists($unit, $value)){
  111. $value[$unit] = $int;
  112. }else{
  113. return false;
  114. }
  115. 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']));
  116. }
  117. public static function addDayTimestamp($ntime, $aday) { // 現在時刻からの日数を取得します。日の増加単位は 1 です
  118. $dayst = 3600 * 24;
  119. $oktime = $ntime + ($aday * $dayst);
  120. public static function dateDiff($begin, $end, $unit = "d") { //時間比較関数。2 つの日付の差を秒、分、時間、または日単位で返します
  121. $diff = strtotime($end) - strtotime($begin); switch($unit);
  122. {
  123. ケース "y": $retval = bcdiv($diff, (60 * 60 * 24 * 365));
  124. ケース "m": $retval = bcdiv($diff, (60 * 60 * 24 *) 30));
  125. ケース "w": $retval = bcdiv($diff, (60 * 60 * 24 * 7));
  126. ケース "d": $retval = bcdiv(60 * 60 * 24));
  127. ケース "h": $retval = bcdiv($diff, (60 * 60));
  128. ケース "i": $retval = bcdiv($diff, 60);
  129. case "s": $retval = $diff; Break;
  130. }
  131. return $retval; }
  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. $秒 = time() - $dateline; ;
  139. if($秒 戻り値 "1 分前";
  140. }elseif($秒 戻り値 ($秒/60)."分前"
  141. }elseif($秒 < 24*3600){
  142. 戻りフロア($秒/3600)."時間前";
  143. }elseif($秒 < 48*3600){
  144. 戻り日付("昨日の H:i", $dateline) ." ";
  145. }else{
  146. return date('Y-m-d', $dateline)
  147. }
  148. }
  149. public static function transDateToChs($date) {
  150. if (empty ($date)) return 'today' ;
  151. date_default_timezone_set('PRC');
  152. $dates = date ('Y 年 m 月 d 日', strtotime ($date));
  153. return $dates }
  154. // 2004 年 8 月 31 日 => 2004-08-31
  155. public static function TransDateUI($datestr, $type = 'Y-m-d') {
  156. if ($datestr == Null)
  157. return Null
  158. $target = $datestr
  159. $arr_date = preg_split; "/ //", $target);
  160. $monthstr = $arr_date[1];
  161. $yearstr = $arr_date[2]; (0 , 0, 0, $monthstr, $daystr, $yearstr));
  162. return $result;
  163. // 2004 年 12 月 20 日 10:55 => 2004 年 12 月 20 日 10:55: 00
  164. public static function TransDateTimeUI($datestr, $type = 'Y-m-d H:i:s') {
  165. if ($datestr == Null)
  166. return Null;
  167. $target = $datestr;
  168. $arr_date = preg_split ( " // |s|:/", $target);
  169. $monthstr = $arr_date[0];
  170. $daystr = $arr_date[1];
  171. $yearstr = $arr_date[2];
  172. $hourstr = $arr_date[ 3] ;
  173. $ minutesstr = $arr_date[4];
  174. $result = date ($type, mktime ($hourstr, $ minutesstr, 0, $monthstr, $daystr, $yearstr));
  175. return $result;
  176. }
  177. }
  178. ?>
  179. コードをコピー
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。