有沒有辦法使用strtotime
將工作日(星期一至星期五)添加到日期?或者其他一些方法?我想要做的是:PHP中的工作日(週一至週五)
date ('Y-m-j' , strtotime ('+3 working days'))
有沒有辦法使用strtotime
將工作日(星期一至星期五)添加到日期?或者其他一些方法?我想要做的是:PHP中的工作日(週一至週五)
date ('Y-m-j' , strtotime ('+3 working days'))
如果您限制到工作日,請使用字符串weekdays。
echo date ('Y-m-j' , strtotime ('3 weekdays'));
這應該讓你前進3個工作日,所以如果是星期四它會增加額外的週末時間。
來源:http://www.php.net/manual/en/datetime.formats.relative.php
需要平日的用量較大時,我發現這車。我正在尋找本月1日之後的X個工作日。
看起來不錯,直到加入> 5個工作日後(類似於發現的@zerkms)。
這對我來說已被證明更準確。
function _getBusinessDayOfMonth($days) {
$time = strtotime(date("m/1/Y 00:00")); //finding # of business days after 1st of the month
$i = 0; //start with zero
while ($i < $days) { //loop through until reached the amount of weekdays
$time = strtotime("+1 day", $time); //Increase day by 1
if (date("N", $time) < 6) { //test if M-F
$i++; //Increase by 1
}
}
echo date("m/d/Y", $time);
}
我覺得一個功能可以很容易地開發,你可以只導出當前每天不星期,你可以添加兩個和5國防部將讓你輕鬆工作日。
function increaseWorkDay($workDayToProcess, $dayToAdd){
if($workDayToProcess >= 4 && $workDayToProcess <= 6){
$workDayToProcess= 4;
}
$workDayToProcess+= $dayToAdd;
return $workDayToProcess % 5;
}
而且您可以通過使用數組導出星期幾名稱,也可以使用此方法。
我做遞歸,工作對我來說
function add_work_days($date, $day){
if($day == 0)
return $date;
$date->add(new DateInterval('P1D'));
if(!in_array($date->format('N'), array('6', '7')))
$day--;
return add_work_days($date, $day);
}
$date = add_work_days(new DateTime(), 3);
echo $date->format('d/m/Y');
對於舊版本的PHP <的5.3
function AddWorkingDays($startDate, $adddays)
{
$retdate = $startDate;
$sign = "+";
if($adddays < 0){
$adddays = $adddays*-1;
$sign = "-";
}
while ($adddays > 0) {
$retdate = date ('Y-m-d' , strtotime ("$retdate {$sign}1 day"));
$what_day = date("N", strtotime($retdate));
if ($what_day != 6 && $what_day != 7) // 6 and 7 are weekend
$adddays--;
};
return $retdate;
}
在一些中東國家,一個週末,每週工作時間爲週日至週四。你有沒有想過:O – 2010-11-23 21:36:27
這是爲了計算未來幾天付款的最後期限是否爲本地活動,所以不要:-) – fredley 2010-11-23 21:37:56