mikefolu
mikefolu

Reputation: 1323

DateTime::__construct(): Failed to parse time string (2) at position 0 (2): Unexpected character in

In my Laravel 5.8 project, When the user submits the form to create a new post it is appering this error:

[2020-06-26 09:16:52] production.ERROR: Exception: DateTime::__construct(): Failed to parse time string (2) at position 0 (2): Unexpected character in /var/www/html/laravelapp/vendor/nesbot/carbon/src/Carbon/Traits/Creator.php:81
Stack trace:
#0 /var/www/html/laravelapp/vendor/nesbot/carbon/src/Carbon/Traits/Creator.php(81): DateTime->__construct('2', Object(Carbon\CarbonTimeZone))
#1 /var/www/html/laravelapp/vendor/nesbot/carbon/src/Carbon/Traits/Creator.php(174): Carbon\Carbon->__construct('2', NULL)
#2 /var/www/html/laravelapp/vendor/nesbot/carbon/src/Carbon/Traits/Creator.php(201): Carbon\Carbon::rawParse('2', NULL)
#3 /var/www/html/laravelapp/app/Http/Controllers/Appraisal/AppraisalGoalsController.php(333): Carbon\Carbon::parse('2')
#4 [internal function]: App\Http\Controllers\Appraisal\AppraisalGoalsController->store(Object(App\Http\Requests\Appraisal\AppraisalGoal\StoreAppraisalGoalRequest))

Model

protected $fillable = [ 'name', 'start_date', 'end_date', ];

protected $dates = [
   'start_date',
   'end_date'
  ];

Request Rules:

        'start_date.*' => [
            'required', 
            'date',
            'date_format:Y-m-d',
        ],
      
        'end_date.*' => [
            'required', 
            'date',
            'date_format:Y-m-d',
            'after:start_date.*'
        ], 

Controller

       foreach(Arr::wrap($request->activity) as $key => $activity){
            $startDate = Carbon::parse($request->start_date[$key]);
            $endDate = Carbon::parse($request->end_date[$key]);

            $goaldetail = new AppraisalGoalDetail();

             $goaldetail->start_date                 = $startDate ->toDateString();
             $goaldetail->end_date                   = $endDate->toDateString();                 
             $goaldetail->save();

            }

view:

  <td>
     <input type="date" name="start_date[]" placeholder="dd/mm/yyyy" class="form-control start_date" min="{{Carbon\Carbon::now()->firstOfYear()->format('Y-m-d')}}" max="{{Carbon\Carbon::now()->lastOfYear()->format('Y-m-d')}}">
  </td>

  <td>
     <input type="date" name="end_date[]" placeholder="dd/mm/yyyy" class="form-control end_date" min="{{Carbon\Carbon::now()->firstOfYear()->format('Y-m-d')}}" max="{{Carbon\Carbon::now()->lastOfYear()->format('Y-m-d')}}">
     </td>

How do I resolve this?

Upvotes: 0

Views: 2148

Answers (1)

Marinov
Marinov

Reputation: 121

Log $request->start_date[$key] inside your loop and check the log file inside storage/logs to see the result.

\Log::info($request->start_date[$key]);

The Carbon::parse() function is not receiving data in the format it expects.

Also, remove the space before the variable name and the ->toDateString() function on your line

$startDate ->toDateString();

Upvotes: 0

Related Questions