public function DateTimeComputed::getValue in Drupal 9
Same name and namespace in other branches
- 8 core/modules/datetime/src/DateTimeComputed.php \Drupal\datetime\DateTimeComputed::getValue()
Gets the data value.
Return value
mixed The data value.
Overrides TypedData::getValue
File
- core/
modules/ datetime/ src/ DateTimeComputed.php, line 40
Class
- DateTimeComputed
- A computed property for dates of date time field items.
Namespace
Drupal\datetimeCode
public function getValue() {
if ($this->date !== NULL) {
return $this->date;
}
/** @var \Drupal\Core\Field\FieldItemInterface $item */
$item = $this
->getParent();
$value = $item->{$this->definition
->getSetting('date source')};
$datetime_type = $item
->getFieldDefinition()
->getSetting('datetime_type');
$storage_format = $datetime_type === DateTimeItem::DATETIME_TYPE_DATE ? DateTimeItemInterface::DATE_STORAGE_FORMAT : DateTimeItemInterface::DATETIME_STORAGE_FORMAT;
try {
$date = DrupalDateTime::createFromFormat($storage_format, $value, DateTimeItemInterface::STORAGE_TIMEZONE);
if ($date instanceof DrupalDateTime && !$date
->hasErrors()) {
$this->date = $date;
// If the format did not include an explicit time portion, then the
// time will be set from the current time instead. For consistency, we
// set the time to 12:00:00 UTC for date-only fields. This is used so
// that the local date portion is the same, across nearly all time
// zones.
// @see \Drupal\Component\Datetime\DateTimePlus::setDefaultDateTime()
// @see http://php.net/manual/datetime.createfromformat.php
if ($datetime_type === DateTimeItem::DATETIME_TYPE_DATE) {
$this->date
->setDefaultDateTime();
}
}
} catch (\Exception $e) {
// @todo Handle this.
}
return $this->date;
}