2017-08-07 17 views
0

日付文字列がSQL形式(例:2017-08-05)で、前の曜日を取得するように変換します。PHPのsql日付文字列から前日の曜日を取得

私は私のような、特定の日付から前の平日を得ることができますstrtotime方法があることを知っている:

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

がこれを行うには良い(きれい)方法はありますか?またはこれはPHPの方法ですか?

+0

平日として? – Andreas

+0

こんにちは@Andreas、日付は任意の日かもしれませんが、出力は前の平日(月曜日金曜日)でなければなりません –

+0

現在のソリューションが動作します、私はちょうど同じメソッドが同じ行に2回発生し、より良い解決策になる –

答えて

1

同じことはただ一つの呼び出しstrtotimeにして達成することができます:金曜日または任意の日に月曜日に

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

これは素敵でシンプルですが、 'string'を与えます。オブジェクトの操作を好む場合は、結果を得るために 'DateTime'、' DateTimeImmutable'、および 'DateInterval'を使うべきです。 – localheinz

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'); 

は、参照:

、参照:

1

Carbon

Carbon::parse('2017-08-05')->previousWeekday() 

を使用するか、またはあなたが

Carbon::parse('2017-08-05')->subWeekday(2)->toDateString() 
0

をsamewayたい場合には、炭素を作成することができます

carbon::parse('2012-08-05')->previousWeekday(); 

は良い方法この...

関連する問題