Функция углерода setTestNow не работает - PullRequest
0 голосов
/ 13 марта 2019

Я работаю на свиданиях в Ларавеле. Я должен установить даты для будущих инъекций пациента. Для простоты предположим, что сегодня 13-03-2019 (среда). Я создал первое свидание как:

$firstDate = Carbon::create(2019,03 ,18, 12); // The day is Monday
// set date
Carbon::setTestNow($firstDate);

Теперь я хочу, чтобы следующие две встречи были в среду и пятницу. Поэтому я снова установил даты следующим образом:

  // set second date
   $secondDate = new Carbon('Wednesday');
   Carbon::setTestNow($secondDate); 
   // set thirdDate
   $thirdDate = new Carbon('Friday');
   Carbon::setTestNow($thirdDate);

В соответствии с приведенным выше примером результат должен быть:

  1. 2019-03-18
  2. 2019-03-20
  3. 2019-03-22

Но проблема в том, что она выводит первую установленную дату правильно, но печатает 2-ю и 3-ю дату неправильно, поскольку считает «среду» следующей недели сегодняшней датой. Итак, Вывод выведите в виде:

  1. 2019-03-18
  2. 2019-03-13
  3. 2019-03-14

Я потратил много времени на это, я был бы признателен, если бы кто-нибудь из вас, люди, мог бы помочь мне в этом. Буду признателен, если кто-нибудь направит меня туда, куда я иду Спасибо.

1 Ответ

1 голос
/ 15 марта 2019

Поскольку функция setTestNow () не работала для 2-й и 3-й даты / дня, поэтому я сначала получаю все три обязательных дня, а затем преобразовываю их в 'dayOfWeek', который возвращает номер дня (воскресенье 0, понедельник 1 и т. Д.). .). Я вычел первый день из второго и третьего дня, а затем, наконец, добавил эти дни к дате, которую я получаю из средства выбора даты.

      // set the start date
      if( $visitstart_date != null && $visitstart_date != '') {
           Carbon::setTestNow($visitstart_date);
      } else {
       Carbon::setTestNow(); 
     }

     if($perweek_visit1_day != '')
     {  
        //Get first selected day number
        $firstDay = Carbon::parse($perweek_visit1_day)->dayOfWeek;
        $perweek_visit1_dayDate = Carbon::now();
     }
     if($perweek_visit2_day != '')
     {  
        //Get second day numer
        $secondDay = Carbon::parse($perweek_visit2_day)->dayOfWeek - $firstDay;
        $perweek_visit2_dayDate = Carbon::now()->addDays($secondDay);
      }
     if($perweek_visit3_day != '')
     {  
        //Get third day number
        $thirdDay = Carbon::parse($perweek_visit3_day)->dayOfWeek - $firstDay;
        $perweek_visit3_dayDate = Carbon::now()->addDays($thirdDay);
     }
...