php时隔日期工具类
php 时间日期工具类
1582), century not-divisible by 400 is not leap
else if ($year > 1582 && $year % 100 == 0 )
return false;
return true;
}
/**
* Fix 2-digit years. Works for any century.
* Assumes that if 2-digit is more than 30 years in future, then previous century.
* @param integer $y year
* @return integer change two digit year into multiple digits
*/
protected static function digitCheck($y)
{
if ($y < 100){
$yr = (integer) date("Y");
$century = (integer) ($yr /100);
if ($yr%100 > 50) {
$c1 = $century + 1;
$c0 = $century;
} else {
$c1 = $century;
$c0 = $century - 1;
}
$c1 *= 100;
// if 2-digit year is less than 30 years in future, set it to this century
// otherwise if more than 30 years in future, then we set 2-digit year to the prev century.
if (($y + $c1) < $yr+30) $y = $y + $c1;
else $y = $y + $c0*100;
}
return $y;
}
/**
* Returns 4-digit representation of the year.
* @param integer $y year
* @return integer 4-digit representation of the year
*/
public static function get4DigitYear($y)
{
return self::digitCheck($y);
}
/**
* Checks to see if the year, month, day are valid combination.
* @param integer $y year
* @param integer $m month
* @param integer $d day
* @return boolean true if valid date, semantic check only.
*/
public static function isValidDate($y,$m,$d)
{
return checkdate($m, $d, $y);
}
public static function checkDate($date, $separator = "-") { //检查日期是否合法日期
$dateArr = explode ($separator, $date);
if (is_numeric ( $dateArr [0] ) && is_numeric ( $dateArr [1] ) && is_numeric ( $dateArr [2] )) {
return checkdate ( $dateArr [1], $dateArr [2], $dateArr [0] );
}
return false;
}
/**
* Checks to see if the hour, minute and second are valid.
* @param integer $h hour
* @param integer $m minute
* @param integer $s second
* @param boolean $hs24 whether the hours should be 0 through 23 (default) or 1 through 12.
* @return boolean true if valid date, semantic check only.
* @since 1.0.5
*/
public static function isValidTime($h,$m,$s,$hs24=true)
{
if($hs24 && ($h < 0 || $h > 23) || !$hs24 && ($h < 1 || $h > 12)) return false;
if($m > 59 || $m < 0) return false;
if($s > 59 || $s < 0) return false;
return true;
}
public static function checkTime($time, $separator = ":") { //检查时间是否合法时间
$timeArr = explode ($separator, $time );
if (is_numeric ( $timeArr [0] ) && is_numeric ( $timeArr [1] ) && is_numeric ( $timeArr [2] )) {
if (($timeArr [0] >= 0 && $timeArr [0] <= 23) && ($timeArr [1] >= 0 && $timeArr [1] <= 59) && ($timeArr [2] >= 0 && $timeArr [2] <= 59))
return true;
else
return false;
}
return false;
}
public static function addDate($date, $int, $unit = "d") { //日期的增加
$dateArr = explode ( "-", $date );
$value [$unit] = $int;
return date ( "Y-m-d", mktime ( 0, 0, 0, $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);
return $oktime;
}
public static function dateDiff($date1, $date2, $unit = "d") { //时间比较函数,返回两个日期相差几秒、几分钟、几小时或几天
switch ($unit) {
case 's' :
$dividend = 1;
break;
case 'i' :
$dividend = 60;
break;
case 'h' :
$dividend = 3600;
break;
case 'd' :
$dividend = 86400;
break;
default :
$dividend = 86400;
}
$time1 = strtotime ( $date1 );
$time2 = strtotime ( $date2 );
if ($time1 && $time2)
return ( float ) ($time1 - $time2) / $dividend;
return false;
}
//2011-12-06 =>
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 floorTime($seconds) { //让日期显示为:XX天XX年以前
$times = '';
$days = floor ( ($seconds / 86400) % 30 );
$hours = floor ( ($seconds / 3600) % 24 );
$minutes = floor ( ($seconds / 60) % 60 );
$seconds = floor ( $seconds % 60 );
if ($seconds >= 1)
$times .= $seconds . '秒';
if ($minutes >= 1)
$times = $minutes . '分钟 ' . $times;
if ($hours >= 1)
$times = $hours . '小时 ' . $times;
if ($days >= 1)
$times = $days . '天';
if ($days > 30)
return false;
$times .= '前';
return str_replace ( " ", '', $times );
}
public static function transDateToChs($date) {
if (empty ( $date ))
return '今日';
$y = date ( 'Y', strtotime ( $date ) );
$m = date ( 'm', strtotime ( $date ) );
$d = date ( 'd', strtotime ( $date ) );
return $y . '年' . $m . '月' . $d . '日';
}
// 08/31/2004 => 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 [0];
$daystr = $arr_date [1];
$yearstr = $arr_date [2];
$result = date ( $type, mktime ( 0, 0, 0, $monthstr, $daystr, $yearstr ) );
return $result;
}
// 12/20/2004 10:55 AM => 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;
}
// 2004-08-31 => 08/31/2004
public static function TransDateDB($datestr, $type = 'm/d/Y') {
if ($datestr == Null)
return Null;
if ($datestr == '0000-00-00')
return Null;
$target = $datestr;
$arr_date = preg_split ( "/-/", $target );
$monthstr = $arr_date [1];
$daystr = $arr_date [2];
$yearstr = $arr_date [0];
$result = date ( $type, mktime ( 0, 0, 0, $monthstr, $daystr, $yearstr ) );
return $result;
}
// 2004-08-31 10:55:00 => 12/20/2004 10:55 AM
public static function TransDateTimeDB($datestr, $type = 'm/d/Y h:i A') {
if ($datestr == Null)
return Null;
$target = $datestr;
$arr_date = preg_split ( "/-|\s|:/", $target );
$monthstr = $arr_date [1];
$daystr = $arr_date [2];
$yearstr = $arr_date [0];
$hourstr = $arr_date [3];
$minutesstr = $arr_date [4];
$secondstr = $arr_date [5];
$result = date ( $type, mktime ( $hourstr, $minutesstr, $secondstr, $monthstr, $daystr, $yearstr ) );
return $result;
}
}
?>
?
/phprm/22499.htmlwww.phpzy.comtrue/phprm/22499.htmlTechArticlephp时隔日期工具类 php 时间日期工具类 1582), century not-divisible by 400 is not leapelse if ($year > 1582 $year % 100 == 0 )return false;return true;}/** * Fix 2-digit years. Works for any century. * Assumes that if 2-digit is...
PHP之友评论