web-dev-qa-db-fra.com

Laravel Carbon début + fin de la semaine en cours

Je travaille avec Laravel 4 sur un outil pour publier/programmer des menus de restaurant sur Facebook. Pour cela, j'ai besoin d'un sélecteur de date pour la semaine en cours, commençant toujours le lundi et se terminant toujours le dimanche.

filaire pour le menu du restaurant

J'ai joué avec les exemples http://carbon.nesbot.com/docs/#api-getters mais sans succès.

Une idée?

13
Steve Brown

C'est assez simple avec Carbon Library. Voici l'exemple de code:

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

Même vous avez la possibilité de changer le jour de début et de fin de la semaine. C'est comme ça,

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

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

11
Its_aggarwal

La meilleure façon est d'utiliser le plugin jquery

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

Dans votre view.blade.php faire un champ de saisie

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

Dans votre fichier de script, sélectionnez cette entrée et définissez la plage de dates

<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>

Cela devrait ressembler à ceci

http://imgur.com/K0ZhiVy

8
Marko Milivojevic

Cela vous donne le début de la semaine (lundi) jusqu'à la fin de la semaine (dimanche).

Aucune idée s'il s'agit d'un paramètre sur le serveur. (Certaines personnes ont mis la première semaine le dimanche)

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