Углерод возвращает неправильную дату?Ларавел 5.6 - PullRequest
0 голосов
/ 30 мая 2018

У меня действительно странная проблема с Carbon в laravel ... Я пытаюсь получить конкретную дату, подобную этой:

    $now = Carbon::now()->setTimezone('America/Costa_Rica');

    $currentYear = $now->copy()->year;

    $febmon = $now->copy()->month(2)->startOfMonth();
    dd($febmon);

Она должна вернуться: 2018-02-01 00:00:00.0 America/Costa_Rica (-06:00)

Но вместо этого я получаю это: 2018-03-01 00:00:00.0 America/Costa_Rica (-06:00)

Я уже пробовал все остальные номера месяцев, и работает отлично, но в феврале ... понятия не имею, что не так.Заранее спасибо

1 Ответ

0 голосов
/ 30 мая 2018

Хорошо, я нашел проблему, моя ошибка, но если кто-то сталкивается с этой простой, но странной проблемой:

Я основываю дату в зависимости от now(), и я устанавливаю month(2), прежде чем яустановите startOfMonth()

И поскольку сегодня 30, он переходит к следующему месяцу в феврале, то есть к марту, так как в феврале нет 30 дней, все, что мне нужно было сделать, - это сначала установить startOfMonth()... так что это займет правильную дату.

Вот правильный путь:

$now = Carbon::now()->setTimezone('America/Costa_Rica');

$febmon = $now->copy()->startOfMonth()->month(2); //Specify the month at last, and set the startOfMonth() first.
dd($febmon);
...