从PHP

时间:2017-08-07 09:28:05

标签: php

我有一个sql格式的日期字符串(例如2017-08-05),并希望将其转换为上一个工作日。

我知道有strtotime方法,我可以从特定日期获取上一个工作日,例如:

date("Y m d",strtotime("-2 Weekday", strtotime("2017-08-05")));

有更好(更漂亮)的方法吗?或者这是PHP的方式?

4 个答案:

答案 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();

没有更好的方法呢......