📄 calc.php
字号:
$month=12; $day=1; } return Date_Calc::dateFormat($day,$month,$year,$format); } // end func beginOfPrevMonth /** * Returns date of the last day of previous month for given date. * * @param string year in format CCYY, default current local year * @param string month in format MM, default current local month * @param string day in format DD, default current local day * @param string format for returned date * * @access public * * @return string date in given format */ function endOfPrevMonth($day="",$month="",$year="",$format="%Y%m%d") { if(empty($year)) $year = Date_Calc::dateNow("%Y"); if(empty($month)) $month = Date_Calc::dateNow("%m"); if(empty($day)) $day = Date_Calc::dateNow("%d"); if($month > 1) { $month--; } else { $year--; $month=12; } $day = Date_Calc::daysInMonth($month,$year); return Date_Calc::dateFormat($day,$month,$year,$format); } // end func endOfPrevMonth /** * Returns date of the next weekday of given date, * skipping from Friday to Monday. * * @param string year in format CCYY, default current local year * @param string month in format MM, default current local month * @param string day in format DD, default current local day * @param string format for returned date * * @access public * * @return string date in given format */ function nextWeekday($day="",$month="",$year="",$format="%Y%m%d") { if(empty($year)) $year = Date_Calc::dateNow("%Y"); if(empty($month)) $month = Date_Calc::dateNow("%m"); if(empty($day)) $day = Date_Calc::dateNow("%d"); $days = Date_Calc::dateToDays($day,$month,$year); if(Date_Calc::dayOfWeek($day,$month,$year) == 5) $days += 3; elseif(Date_Calc::dayOfWeek($day,$month,$year) == 6) $days += 2; else $days += 1; return(Date_Calc::daysToDate($days,$format)); } // end func nextWeekday /** * Returns date of the previous weekday, * skipping from Monday to Friday. * * @param string year in format CCYY, default current local year * @param string month in format MM, default current local month * @param string day in format DD, default current local day * @param string format for returned date * * @access public * * @return string date in given format */ function prevWeekday($day="",$month="",$year="",$format="%Y%m%d") { if(empty($year)) $year = Date_Calc::dateNow("%Y"); if(empty($month)) $month = Date_Calc::dateNow("%m"); if(empty($day)) $day = Date_Calc::dateNow("%d"); $days = Date_Calc::dateToDays($day,$month,$year); if(Date_Calc::dayOfWeek($day,$month,$year) == 1) $days -= 3; elseif(Date_Calc::dayOfWeek($day,$month,$year) == 0) $days -= 2; else $days -= 1; return(Date_Calc::daysToDate($days,$format)); } // end func prevWeekday /** * Returns date of the next specific day of the week * from the given date. * * @param int day of week, 0=Sunday * @param string year in format CCYY, default current local year * @param string month in format MM, default current local month * @param string day in format DD, default current local day * @param boolean onOrAfter if true and days are same, returns current day * @param string format for returned date * * @access public * * @return string date in given format */ function nextDayOfWeek($dow,$day="",$month="",$year="",$format="%Y%m%d",$onOrAfter=false) { if(empty($year)) $year = Date_Calc::dateNow("%Y"); if(empty($month)) $month = Date_Calc::dateNow("%m"); if(empty($day)) $day = Date_Calc::dateNow("%d"); $days = Date_Calc::dateToDays($day,$month,$year); $curr_weekday = Date_Calc::dayOfWeek($day,$month,$year); if($curr_weekday == $dow) { if(!$onOrAfter) $days += 7; } elseif($curr_weekday > $dow) $days += 7 - ( $curr_weekday - $dow ); else $days += $dow - $curr_weekday; return(Date_Calc::daysToDate($days,$format)); } // end func nextDayOfWeek /** * Returns date of the previous specific day of the week * from the given date. * * @param int day of week, 0=Sunday * @param string year in format CCYY, default current local year * @param string month in format MM, default current local month * @param string day in format DD, default current local day * @param boolean onOrBefore if true and days are same, returns current day * @param string format for returned date * * @access public * * @return string date in given format */ function prevDayOfWeek($dow,$day="",$month="",$year="",$format="%Y%m%d",$onOrBefore=false) { if(empty($year)) $year = Date_Calc::dateNow("%Y"); if(empty($month)) $month = Date_Calc::dateNow("%m"); if(empty($day)) $day = Date_Calc::dateNow("%d"); $days = Date_Calc::dateToDays($day,$month,$year); $curr_weekday = Date_Calc::dayOfWeek($day,$month,$year); if($curr_weekday == $dow) { if(!$onOrBefore) $days -= 7; } elseif($curr_weekday < $dow) $days -= 7 - ( $dow - $curr_weekday ); else $days -= $curr_weekday - $dow; return(Date_Calc::daysToDate($days,$format)); } // end func prevDayOfWeek /** * Returns date of the next specific day of the week * on or before the given date. * * @param int day of week, 0=Sunday * @param string year in format CCYY, default current local year * @param string month in format MM, default current local month * @param string day in format DD, default current local day * @param string format for returned date * * @access public * * @return string date in given format */ function nextDayOfWeekOnOrAfter($dow,$day="",$month="",$year="",$format="%Y%m%d") { return(Date_Calc::nextDayOfWeek($dow,$day="",$month="",$year="",$format="%Y%m%d",true)); } // end func nextDayOfWeekOnOrAfter /** * Returns date of the previous specific day of the week * on or before the given date. * * @param int day of week, 0=Sunday * @param string year in format CCYY, default current local year * @param string month in format MM, default current local month * @param string day in format DD, default current local day * @param string format for returned date * * @access public * * @return string date in given format */ function prevDayOfWeekOnOrBefore($dow,$day="",$month="",$year="",$format="%Y%m%d") { return(Date_Calc::prevDayOfWeek($dow,$day="",$month="",$year="",$format="%Y%m%d",true)); } // end func prevDayOfWeekOnOrAfter /** * Returns date of day after given date. * * @param string year in format CCYY, default current local year * @param string month in format MM, default current local month * @param string day in format DD, default current local day * @param string format for returned date * * @access public * * @return string date in given format */ function nextDay($day="",$month="",$year="",$format="%Y%m%d") { if(empty($year)) $year = Date_Calc::dateNow("%Y"); if(empty($month)) $month = Date_Calc::dateNow("%m"); if(empty($day)) $day = Date_Calc::dateNow("%d"); $days = Date_Calc::dateToDays($day,$month,$year); return(Date_Calc::daysToDate($days + 1,$format)); } // end func nextDay /** * Returns date of day before given date. * * @param string year in format CCYY, default current local year * @param string month in format MM, default current local month * @param string day in format DD, default current local day * @param string format for returned date * * @access public * * @return string date in given format */ function prevDay($day="",$month="",$year="",$format="%Y%m%d") { if(empty($year)) $year = Date_Calc::dateNow("%Y"); if(empty($month)) $month = Date_Calc::dateNow("%m"); if(empty($day)) $day = Date_Calc::dateNow("%d"); $days = Date_Calc::dateToDays($day,$month,$year); return(Date_Calc::daysToDate($days - 1,$format)); } // end func prevDay /** * Sets century for 2 digit year. * 51-99 is 19, else 20 * * @param string 2 digit year * * @access public * * @return string 4 digit year */ function defaultCentury($year) { if(strlen($year) == 1) $year = "0$year"; if($year > 50) return( "19$year" ); else return( "20$year" ); } // end func defaultCentury /** * Returns number of days between two given dates. * * @param string year in format CCYY * @param string month in format MM * @param string day in format DD * @param string year in format CCYY * @param string month in format MM * @param string day in format DD * * @access public * * @return int absolute number of days between dates, * -1 if there is an error. */ function dateDiff($day1,$month1,$year1,$day2,$month2,$year2) { if(!Date_Calc::isValidDate($day1,$month1,$year1)) return -1; if(!Date_Calc::isValidDate($day2,$month2,$year2)) return -1; return(abs((Date_Calc::dateToDays($day1,$month1,$year1)) - (Date_Calc::dateToDays($day2,$month2,$year2)))); } // end func dateDiff /** * Compares two dates * * @param string $day1 day in format DD * @param string $month1 month in format MM * @param string $year1 year in format CCYY * @param string $day2 day in format DD * @param string $month2 month in format MM * @param string $year2 year in format CCYY * * @access public * @return int 0 on equality, 1 if date 1 is greater, -1 if smaller */ function compareDates($day1,$month1,$year1,$day2,$month2,$year2) { $ndays1 = Date_Calc::dateToDays($day1, $month1, $year1); $ndays2 = Date_Calc::dateToDays($day2, $month2, $year2); if ($ndays1 == $ndays2) { return 0; } return ($ndays1 > $ndays2) ? 1 : -1; } /** * Find the number of days in the given month. * * @param string month in format MM, default current local month * * @access public * * @return int number of days */ function daysInMonth($month="",$year="") { if(empty($year)) $year = Date_Calc::dateNow("%Y"); if(empty($month)) $month = Date_Calc::dateNow("%m"); if($month == 2) { if(Date_Calc::isLeapYear($year)) return 29; else return 28; } elseif($month == 4 or $month == 6 or $month == 9 or $month == 11) return 30; else return 31; } // end func daysInMonth
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -