steve marrón
Estoy trabajando con Laravel 4 en una herramienta para publicar/programar menús de restaurantes en Facebook. Para esto necesito un selector de fecha para la semana actual, comenzando siempre el lunes y terminando siempre el domingo.
Wireframe para el menú del restaurante
he jugado con los ejemplos http://carbon.nesbot.com/docs/#api-getters pero sin éxito.
¿Alguna idea?
Es_aggarwal
Esto es bastante simple con Carbon Library. Aquí está el ejemplo de código:
$now = Carbon::now();
$weekStartDate = $now->startOfWeek()->format('Y-m-d H:i');
$weekEndDate = $now->endOfWeek()->format('Y-m-d H:i');
Incluso tienes la opción de cambiar el día de inicio y finalización de la semana. Es así,
$start = $now->startOfWeek(Carbon::TUESDAY);
$end = $now->endOfWeek(Carbon::MONDAY);
-
esto establecerá ambas variables al final de la semana, como
->startOfWeek
cambiará la variable, no la clonará– usuario151496
20 de julio de 2021 a las 9:37
-
Para evitar hacer un clon, use ->copy()
– Máx.
11 de agosto de 2021 a las 14:07
-
Es mejor usar la interfaz para las constantes de Carbono:
CarbonInterface::MONDAY
– DMat
4 de julio de 2022 a las 11:37
Marko Milivojevic
La mejor manera es usando el complemento jquery.
En su view.blade.php haga un campo de entrada
<input type="text" id="in">
En su archivo de secuencia de comandos, seleccione esta entrada y establezca el intervalo de fechas
<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>
Esto debería verse así
Tenga en cuenta que deberá usar CarbonImmutable si desea que la fecha de inicio siga siendo el comienzo de la semana. (Además, no es “Laravel Carbon”, es solo Carbon)
$now = CarbonImmutable::now();
$weekStartDate = $now->startOfWeek();
$weekEndDate = $now->endOfWeek();
-
Gracias. Estaba totalmente perplejo en cuanto a por qué mi fecha de inicio estaba siendo alterada al llamar
endOfWeek()
en la instancia de fecha original. Ahora lo entiendo.– Redtama
22 de abril de 2021 a las 12:58
demian
Esto le da el comienzo de la semana (lunes) hasta el final de la semana (domingo).
No tengo idea si esta es una configuración en el servidor. (Algunas personas ponen la semana inicial en domingo)
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();
}
Ahmad Reza Azimi
Funcionó bien para mí.
$now = now();
$weekStartDate = $now->copy()->startOfWeek()->format('Y-m-d');
$weekEndDate = $now->copy()->endOfWeek()->format('Y-m-d');