You are here

function _date_feeds_get_date_object in Feeds 7.2

Converts a date string or object into a DateObject.

Parameters

DateTime|string|int $value: The date value or object.

DateTimeZone $default_tz: The default timezone.

Return value

DateObject The converted DateObject.

1 call to _date_feeds_get_date_object()
date_feeds_set_target in mappers/date.inc
Callback for setting date values.

File

mappers/date.inc, line 181
On behalf implementation of Feeds mapping API for date.module.

Code

function _date_feeds_get_date_object($value, DateTimeZone $default_tz) {
  if ($value instanceof DateObject) {
    return $value;
  }

  // Convert DateTime and FeedsDateTime.
  if ($value instanceof DateTime) {
    if (!$value
      ->getTimezone() || !preg_match('/[a-zA-Z]/', $value
      ->getTimezone()
      ->getName())) {
      $value
        ->setTimezone($default_tz);
    }
    return new DateObject($value
      ->format(DATE_FORMAT_ISO), $value
      ->getTimezone());
  }
  if (is_string($value) || is_object($value) && method_exists($value, '__toString')) {
    $value = trim($value);
  }

  // Filter out meaningless values.
  if (empty($value) || !is_string($value) && !is_int($value)) {
    return FALSE;
  }

  // Support year values.
  if ((string) $value === (string) (int) $value) {
    if ($value >= variable_get('date_min_year', 100) && $value <= variable_get('date_max_year', 4000)) {
      return new DateObject('January ' . $value, $default_tz);
    }
  }
  return new DateObject($value, $default_tz);
}