我有一个sql格式的日期字符串(例如2017-08-05
),并希望将其转换为上一个工作日。
我知道有strtotime
方法,我可以从特定日期获取上一个工作日,例如:
date("Y m d",strtotime("-2 Weekday", strtotime("2017-08-05")));
有更好(更漂亮)的方法吗?或者这是PHP的方式?
答案 0 :(得分:1)
使用Carbon
Carbon::parse('2017-08-05')->previousWeekday()
或者如果你想要同样的话
Carbon::parse('2017-08-05')->subWeekday(2)->toDateString()
答案 1 :(得分:1)
只需拨打一次strtotime
:
date("Y m d", strtotime("2017-08-05 -2 Weekday"))
答案 2 :(得分:0)
试试这个:
// create a new instance of DateTimeImmutable
$date = new \DateTimeImmutable('2017-08-05');
// create a one-day interval
$interval = new \DateInterval('P1D');
// subtract the interval, and keep doing that while the day before is not a weekday
do {
$date = $date->sub($interval);
} while (5 < $date->format('N'));
echo $date->format('Y-m-d');
供参考,见:
有关示例,请参阅:
答案 3 :(得分:0)
你可以创造一个碳
carbon::parse('2012-08-05')->previousWeekday();
没有更好的方法呢......