📄 calc.php
字号:
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--;
$day=1;
}
else
{
$year--;
$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
/**
* 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;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -