예제 #1
0
 /**
  * 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;
 }