/** * Convert a DateTime to a storable string. * * @param mixed $value Mixed Value * * @return string */ function fromDateTime($value) { $format = DB::getQueryGrammar()->getDateFormat(); if (is_numeric($value)) { $value = Carbon::createFromTimestamp($value); } elseif (is_string($value) && preg_match('/^(\\d{4})-(\\d{2})-(\\d{2})$/', $value)) { $value = Carbon::createFromFormat('Y-m-d', $value)->startOfDay(); } elseif (is_string($value)) { $dateFormat = config('nwlaravel.date_format'); $date = date_parse_from_format($dateFormat, $value); if (isset($date['error_count']) && $date['error_count'] == 0) { if (checkdate($date['month'], $date['day'], $date['year'])) { $value = Carbon::createFromFormat($dateFormat, $value)->startOfDay(); } } else { $date = date_parse_from_format($format, $value); if (isset($date['error_count']) && $date['error_count'] == 0) { $value = Carbon::createFromFormat($format, $value); } } if (strtotime($value) !== false) { $value = new Carbon($value); } } if ($value instanceof DateTime) { return $value->format($format); } return null; }