web-dev-qa-db-ja.com

Laravelカーボンスタート+今週の終わり

私はLaravel 4を使用して、facebookでレストランメニューを公開/スケジュールするためのツールを使用しています。これには、今週の日付セレクタが必要で、常に月曜日に始まり、常に日曜日に終わります。

レストランメニューのワイヤーフレーム

私は例をいじってみました http://carbon.nesbot.com/docs/#api-getters が、成功しませんでした。

何か案が?

13
Steve Brown

これは、Carbon Libraryを使用すると非常に簡単です。次にコード例を示します。

$now = Carbon::now();
$weekStartDate = $now->startOfWeek()->format('Y-m-d H:i');
$weekEndDate = $now->endOfWeek()->format('Y-m-d H:i');

週の開始日と終了日を変更するオプションもあります。こんな感じです

$start = $now->startOfWeek(Carbon::TUESDAY);
$end = $now->endOfWeek(Carbon::MONDAY);

出典: https://carbon.nesbot.com/docs/#api-getters

11
Its_aggarwal

最良の方法はjqueryプラグインを使用することです

http://api.jqueryui.com/datepicker/

あなたのview.blade.phpに入力フィールドを作ります

<input type="text" id="in">

スクリプトファイルでこの入力を選択し、日付範囲を設定します

<script>
        $("#in").datepicker({
            minDate: new Date("{{Carbon\Carbon::now()->startOfWeek()->format('Y/m/d')}}"),
            maxDate: new Date("{{Carbon\Carbon::now()->endOfWeek()->format('Y/m/d')}}")
        });
</script>

これは次のようになります

http://imgur.com/K0ZhiVy

8

これにより、週の始まり(月曜日)から週の終わり(日曜日)までが得られます。

これがサーバーの設定かどうかはわかりません。 (最初の週を日曜日にする人もいます)

private $start;
private $end;

public function setWeekPeriod($weeknumber)
{
    $week_start = (new DateTime())->setISODate(date("Y"),$weeknumber)->format("Y-m-d H:i:s");

    $this->start = Carbon::createFromFormat("Y-m-d H:i:s", $week_start);
    $this->start->hour(0)->minute(0)->second(0);
    $this->end = $this->start->copy()->endOfWeek();
}
4
Demian