Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

mahmudcdh's avatar

Date insert issue when data upload from excel using maatwebsite/excel in laravel

Date insert issue when data upload from excel using maatwebsite/excel in laravel. Follwing error shows -

Carbon\Exceptions\InvalidFormatException: The separation symbol could not be found in file D:\lara-agentApp\vendor\nesbot\carbon\src\Carbon\Traits\Creator.php on line 690

My excel file date format is: 10-Nov-23

0 likes
10 replies
jlrdw's avatar

Work out a getter and setter to do the conversion correctly.

mahmudcdh's avatar

Please check below dd result-

array:7 [ // app\Imports\VesselImport.php:49 "vessel" => "USER VSL01" "voyage" => "U123s" "vessel_flag" => "LR" "vessel_departure_date" => 44928 "vessel_arrival_date" => 44932 "vessel_pol" => "LKCMB" "vessel_pod" => "BDCGP" ]

tangtang's avatar

@mahmudcdh

is your date data from this array ?

"vessel_departure_date" => 44928 "vessel_arrival_date" => 44932

in this vessel_arrival_date and vessel_departure_date the value is not represent the date type. thats why the carbon send error respons.

can you show this full import code ?

mahmudcdh's avatar

I use below code for date upload -

        'vessel_departure_date' => Carbon::createFromFormat('d-M-Y', $row['vessel_departure_date'])->toDateTimeString(), // D2
        'vessel_arrival_date' => Carbon::createFromFormat('d-M-Y', $row['vessel_arrival_date'])->toDateTimeString(), // E2
     
tangtang's avatar

@mahmudcdh

to make sure again show the dd result from this $row['vessel_arrival_date'] and $row['vessel_departure_date']

and with this toDateTimeString will result the time format like Y-m-d H:i:s

you have the time value in your date excel column ? and what your vessel_departure_date and vessel_arrival_date data type in database ? date only or datetime ?

mahmudcdh's avatar

@tangtang dd result like beow - array:7 [ // app\Imports\VesselImport.php:49 "vessel" => "USER VSL01" "voyage" => "U123s" "vessel_flag" => "LR" "vessel_departure_date" => 44928 "vessel_arrival_date" => 44932 "vessel_pol" => "LKCMB" "vessel_pod" => "BDCGP" ]

tangtang's avatar

@mahmudcdh

seems like the vessel_departure_date and vessel_arrival_date are being read as numeric values (possibly excel date serial numbers) rather than as date strings.

modify your code like this

'vessel_departure_date' => Carbon::createFromTimestamp(($row['vessel_departure_date'] - 25569) * 86400)->toDateTimeString(),
'vessel_arrival_date' => Carbon::createFromTimestamp(($row['vessel_arrival_date'] - 25569) * 86400)->toDateTimeString(),

Please or to participate in this conversation.