make(Illuminate\Contracts\Console\Kernel::class); $kernel->bootstrap(); use Carbon\Carbon; $testStrings = [ '2026-05-05 10:11:00', // raw local format without offset '2026-05-05T10:11:00+08:00', // ISO format with +08:00 offset 'Tue May 05 2026 10:11:00 GMT+0800 (China Standard Time)', // JS format with offset '1770058260', // Unix timestamp for May 5, 2026 10:11:00 UTC+8 (which is 02:11:00 UTC) ]; foreach ($testStrings as $str) { echo "--- Parsing: '$str' ---\n"; // Simulating parseDateSafe $cleanDateStr = trim(explode('(', $str)[0]); $parsed = null; if (is_numeric($cleanDateStr)) { $parsed = Carbon::createFromTimestamp($cleanDateStr); } else { $parsed = Carbon::parse($cleanDateStr); } echo "Parsed timezone: " . $parsed->tzName . "\n"; echo "Parsed time string: " . $parsed->toDateTimeString() . "\n"; // When saved to database, standard Laravel database driver uses $parsed->toDateTimeString() // OR it might format it in UTC. Let's see: $formattedForDb = $parsed->toDateTimeString(); echo "Formatted for DB: " . $formattedForDb . "\n"; // When retrieved from DB: $retrieved = Carbon::parse($formattedForDb); // Laravel parses from DB echo "Retrieved timezone: " . $retrieved->tzName . "\n"; echo "Retrieved time string: " . $retrieved->toDateTimeString() . "\n\n"; }