/**
  * Restore the value.
  *
  * @param $value
  * @return Carbon
  */
 public function restore($value)
 {
     if (!$value) {
         return null;
     }
     if ($value instanceof Carbon) {
         return $value;
     }
     if (is_string($value)) {
         return (new Carbon())->createFromTimestamp(strtotime($value));
     }
     return (new Carbon())->createFromFormat($this->fieldType->getStorageFormat(), $value);
 }
 /**
  * Return a carbon instance
  * based on the value.
  *
  * @param      $value
  * @param null $timezone
  * @return Carbon|null
  * @throws \Exception
  */
 protected function toCarbon($value, $timezone = null)
 {
     if (!$value) {
         return null;
     }
     if ($value instanceof Carbon) {
         return $value;
     }
     if (is_numeric($value)) {
         return (new Carbon())->createFromTimestamp($value, $timezone);
     }
     if ($timestamp = strtotime($value)) {
         return (new Carbon())->createFromTimestamp($timestamp, $timezone);
     }
     return (new Carbon())->createFromFormat($this->fieldType->getStorageFormat(), $value, $timezone);
 }