-
- /**
- * 機能: php 時刻と日付ツールクラス
- * エディター: bbs.it-home.org
- */
- DateTimeUtils::addDate('2013-12-01',1,'y');
- DateTimeUtils::getWeekDay('2013/10/01','/');
- DateTimeUtils::isLeap Year('2013');
- DateTimeUtils::timeFromNow(strtotime("2013-10-26 14:15:13"));
- class DateTimeUtils {
- /**
- * うるう年をチェックし、うるう年である場合は true を返します。 2桁の西暦チェックはありません。また、
- * ユリウス暦を正しく処理します。
- * @param integer $year チェックする年
- * @return boolean true 閏年の場合
- */
- public static function isLeap Year($year)
- {
- $year = self::digitCheck($year);
- if ($year % 4 != 0)
- false を返します。
-
- if ($year % 400 == 0)
- true を返します。
- // グレゴリオ暦 (>1582) の場合、400 で割り切れない世紀は閏ではありません
- else if ($year > 1582 && $year % 100 == 0)
- return false;
- true を返します。
- }
-
- /**
- * 2桁の年を修正します。どの世紀でも機能します。
- * 2 桁が 30 年以上先の場合、前世紀であると仮定します。
- * @param integer $y year
- * @return integer 2 桁の年を複数の桁に変更します
- */
- 保護された静的関数 digitCheck($y)
- {
- if ($y < 100){
- $yr = (整数) date("Y");
- $century = (整数) ($yr /100);
-
- if ($yr%100 > 50) {
- $c1 = $century + 1;
- $c0 = $century;
- } else {
- $c1 = $century;
- $c0 = $century - 1;
- }
- $c1 *= 100;
- // 2 桁の年が将来 30 年未満の場合は、今世紀に設定します
- // それ以外の場合、30 年以上先の場合は、2 桁の年を前世紀に設定します。
- if (($y + $c1) < $yr+30) $y = $y + $c1;
- それ以外の場合 $y = $y + $c0*100;
- }
- $y を返します。
- }
-
- /**
- * 西暦の 4 桁表現を返します。
- * @param integer $y year
- * @return integer 年の 4 桁表現
- */
- public static function get4Digit Year($y)
- {
- return self::digitCheck($y);
- }
- /**
- * 年、月、日の組み合わせが有効かどうかを確認します。
- * @param integer $y 年
- * @param integer $m 月
- * @param integer $d 日
- * @return boolean 有効な日付の場合は true、意味チェックのみ。
- */
- public static function isValidDate($y,$m,$d)
- {
- return checkdate($m, $d, $y);
- }
-
- public static function checkDate($date, $separator = "-") { //检查日期の有無 合法日期
- $dateArr =explode ($separator, $date);
- return self::isValidDate ($dateArr[0], $dateArr[1], $dateArr[2]);
- }
- /**
- * 時、分、秒が有効かどうかを確認します。
- * @param integer $h 時間
- * @param integer $m 分
- * @param integer $s 秒
- * @param boolean $hs24 時間を 0 ~ 23 (デフォルト) にするか、1 ~ 12 にするか。
- * @有効な日付の場合はブール値 true を返し、セマンティック チェックのみを行います。
- * @1.0.5 以降
- */
- public static function isValidTime($h,$m,$s,$hs24=true)
- {
- if($hs24 && ($h < 0 || $h > ; 23) || !$hs24 && ($h < 1 || $h > 12)) false を返します。
- if($m > 59 || $m <0) false を返します。
- if($s > 59 || $s < 0) false を返します。
- true を返します。
- }
-
- public static function checkTime($time, $separator = ":") { //检查時間が合法かどうか
- $timeArr =explode($separator, $time);
- return self::isValidTime($timeArr[0], $timeArr[1],$timeArr[2]);
- }
-
- public static function addDate($date, $int, $unit = "d") { //日期の追加
- $value = array('y'=>'', 'm'=>' ', 'd'=>'');
- $dateArr = 爆発 ( "-", $date);
- if(array_key_exists($unit, $value)){
- $value[$unit] = $int;
- }else{
- false を返します。
- }
- return date ("Y-m-d", mktime (0, 0, 0, $dateArr[1] + $value['m'], $dateArr[2] + $value['d'], $dateArr[0 ] +$value['y']));
- }
-
- public static function addDateTime($date, $int, $unit = "d") { //日付を追加
- $value = array('y'=>'', 'm'=>'', ' d'=>'', 'h'=>'', 'i'=>'');
- $dateArr = preg_split ( "/-|s|:/", $date); array_key_exists($unit, $value)){
- $value[$unit] = $int;
- }else{
- return false;
- }
- 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']));
- }
-
- public static function addDayTimestamp($ntime, $aday) { // 現在時刻からの日数を取得します。日の増加単位は 1 です
- $dayst = 3600 * 24;
- $oktime = $ntime + ($aday * $dayst);
- public static function dateDiff($begin, $end, $unit = "d") { //時間比較関数。2 つの日付の差を秒、分、時間、または日単位で返します
- $diff = strtotime($end) - strtotime($begin); switch($unit);
- {
- ケース "y": $retval = bcdiv($diff, (60 * 60 * 24 * 365));
- ケース "m": $retval = bcdiv($diff, (60 * 60 * 24 *) 30));
- ケース "w": $retval = bcdiv($diff, (60 * 60 * 24 * 7));
- ケース "d": $retval = bcdiv(60 * 60 * 24));
- ケース "h": $retval = bcdiv($diff, (60 * 60));
- ケース "i": $retval = bcdiv($diff, 60);
- case "s": $retval = $diff; Break;
- }
- return $retval; }
-
- public static function getWeekDay($date, $separator = "-") { //指定された日付を計算します週
- $dateArr =explode ($separator, $date);
- return date ("w", mktime (0, 0, 0, $dateArr[1], $dateArr[2], $dateArr[0])) ;
- }
-
- public static function timeFromNow($dateline) { //日付を次のように表示します: XX 日 XX 年前
- if(empty($dateline)) return false
- $秒 = time() - $dateline; ;
- if($秒 戻り値 "1 分前";
- }elseif($秒 戻り値 ($秒/60)."分前"
- }elseif($秒 < 24*3600){
- 戻りフロア($秒/3600)."時間前";
- }elseif($秒 < 48*3600){
- 戻り日付("昨日の H:i", $dateline) ." ";
- }else{
- return date('Y-m-d', $dateline)
- }
- }
-
- public static function transDateToChs($date) {
- if (empty ($date)) return 'today' ;
- date_default_timezone_set('PRC');
- $dates = date ('Y 年 m 月 d 日', strtotime ($date));
- return $dates }
-
- // 2004 年 8 月 31 日 => 2004-08-31
- public static function TransDateUI($datestr, $type = 'Y-m-d') {
- if ($datestr == Null)
- return Null
- $target = $datestr
- $arr_date = preg_split; "/ //", $target);
- $monthstr = $arr_date[1];
- $yearstr = $arr_date[2]; (0 , 0, 0, $monthstr, $daystr, $yearstr));
- return $result;
- // 2004 年 12 月 20 日 10:55 => 2004 年 12 月 20 日 10:55: 00
- public static function TransDateTimeUI($datestr, $type = 'Y-m-d H:i:s') {
- if ($datestr == Null)
- return Null;
- $target = $datestr;
- $arr_date = preg_split ( " // |s|:/", $target);
- $monthstr = $arr_date[0];
- $daystr = $arr_date[1];
- $yearstr = $arr_date[2];
- $hourstr = $arr_date[ 3] ;
- $ minutesstr = $arr_date[4];
- $result = date ($type, mktime ($hourstr, $ minutesstr, 0, $monthstr, $daystr, $yearstr));
- return $result;
- }
- }
- ?>
-
-
- コードをコピー
-
-
-
-
-
-
-
-
|