我想检查所选日期(例如每月25例)是否是周末。
如果不是周末(周六或周日),则所选日期将保持不变。但如果这一天是周末,所选日期将移至最接近的工作日(周一至周五)。
实施例
2016-03-24 is a Thursday.
2016-03-25 is a Friday.
2016-03-26 is a Saturday.
2016-03-27 is a Sunday.
2016-03-28 is a Monday.
如果这个月的日子是26,那么最接近的工作日是星期五。如果本月的这一天是27,那么最接近的工作日是星期一。等等...
我该如何做到这一点?
答案 0 :(得分:3)
像这样的东西
function getClosestWeekday($dateString) {
$date = new DateTime($dateString);
$weekday = $date->format("N");
if ($weekday == 6) {
$date = $date->sub(new DateInterval("P1D"));
} else if ($weekday == 7) {
$date = $date->add(new DateInterval("P1D"));
}
return $date;
}
var_dump(getClosestWeekday("2016-03-24")); // returns 2016-03-24
var_dump(getClosestWeekday("2016-03-25")); // returns 2016-03-25
var_dump(getClosestWeekday("2016-03-26")); // returns 2016-03-25
var_dump(getClosestWeekday("2016-03-27")); // returns 2016-03-28
var_dump(getClosestWeekday("2016-03-28")); // returns 2016-03-28
你不知道如何做到这一事实并不能证明你没有尝试任何事情。 PHP.net为您提供了至少可以实现这一目标的所有工具。 http://php.net/manual/en/book.datetime.php
答案 1 :(得分:1)
试
<?php
$day = date('l', strtotime('2009-10-24'));
if($day == 'Saturday'){
echo 'Friday';
} else if($day == 'Sunday'){
echo 'Monday';
} else {
echo $day;
}
希望它有所帮助:)
答案 2 :(得分:0)
所以,为了简化,如果是星期六,应该移动-1天,如果是太阳,应该移动+1,其他的仍然是:
<?php
function changeDate($date) {
if (date("N", strtotime($date)) == 6) {
return date("Y-m-d", strtotime("-1 day ", strtotime($date)));
} elseif (date("N", strtotime($date)) == 7) {
return date("Y-m-d", strtotime("+1 day ", strtotime($date)));
} else {
return date("Y-m-d", strtotime($date));
}
}
echo changeDate("2016-03-25"); //Friday
echo '<br>';
echo changeDate("2016-03-26"); //Saturday
echo '<br>';
echo changeDate("2016-03-27"); //Sunday
?>
输出:
2016-03-25 //not changed
2016-03-25 //moved -1 day
2016-03-28 //moved +1 day
答案 3 :(得分:0)
在下面的示例中,我将向您展示最短和(在我看来)获得下一个工作日的最佳选择。
// Create a new DateTime object
$date = DateTime::createFromFormat('Y-m-d', '2016-03-25')->modify('-1 day');
// Modify the date to get the next weekday
$date->modify('next weekday');
// Output the date
echo $date->format('Y-m-d');
让“DateTime”变得非常棒的是它非常灵活,让你可以尝试“尝试”。像上面这样的东西。
祝你好运!