我有一個sql格式的日期字符串(例如2017-08-05
),並希望將其轉換爲前一個工作日。從SQL日期字符串獲取前一個工作日PHP
我知道有是strtotime
方法,我可以從一個特定的日期得到以前的工作日,如:
date("Y m d",strtotime("-2 Weekday", strtotime("2017-08-05")));
有沒有更好的(漂亮)的方式來做到這一點?或者這是PHP的方式?
我有一個sql格式的日期字符串(例如2017-08-05
),並希望將其轉換爲前一個工作日。從SQL日期字符串獲取前一個工作日PHP
我知道有是strtotime
方法,我可以從一個特定的日期得到以前的工作日,如:
date("Y m d",strtotime("-2 Weekday", strtotime("2017-08-05")));
有沒有更好的(漂亮)的方式來做到這一點?或者這是PHP的方式?
同樣可以只用一個呼叫strtotime
來實現:
date("Y m d", strtotime("2017-08-05 -2 Weekday"))
這很好,很簡單,但它給你一個'字符串'。如果您更喜歡操作對象,則應該使用DateTime,DateTimeImmutable和DateInterval來實現結果。 – localheinz
嘗試這種情況:
// 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');
爲了參考,見:
有關示例,請參見:
通過使用Carbon
Carbon::parse('2017-08-05')->previousWeekday()
或者,如果你想同一開頭
Carbon::parse('2017-08-05')->subWeekday(2)->toDateString()
您可以創建一個碳
carbon::parse('2012-08-05')->previousWeekday();
沒有更好的辦法那麼這...
平日爲週一至週五或任何一天? – Andreas
嗨@Andreas,日期可能是任何一天,但輸出應該是以前的週日(週一至週五) –
當前的解決方案的工作原理,我只是覺得奇怪的是,同一個方法出現兩次相同的方法,成爲更好的解決方案 –