class DateTimeComputed
A computed property for dates of date time field items.
Required settings (below the definition's 'settings' key) are:
- date source: The date property containing the to be computed date.
Hierarchy
- class \Drupal\Core\TypedData\TypedData implements \Drupal\Core\TypedData\TypedDataInterface, \Drupal\Component\Plugin\PluginInspectionInterface uses \Drupal\Core\DependencyInjection\DependencySerializationTrait, \Drupal\Core\StringTranslation\StringTranslationTrait, \Drupal\Core\TypedData\TypedDataTrait- class \Drupal\datetime\DateTimeComputed extends \Drupal\Core\TypedData\TypedData
 
Expanded class hierarchy of DateTimeComputed
1 file declares its use of DateTimeComputed
- DateRangeItem.php in core/modules/ datetime_range/ src/ Plugin/ Field/ FieldType/ DateRangeItem.php 
File
- 
              core/modules/ datetime/ src/ DateTimeComputed.php, line 18 
Namespace
Drupal\datetimeView source
class DateTimeComputed extends TypedData {
  
  /**
   * Cached computed date.
   *
   * @var \DateTime|null
   */
  protected $date = NULL;
  
  /**
   * {@inheritdoc}
   */
  public function __construct(DataDefinitionInterface $definition, $name = NULL, TypedDataInterface $parent = NULL) {
    parent::__construct($definition, $name, $parent);
    if (!$definition->getSetting('date source')) {
      throw new \InvalidArgumentException("The definition's 'date source' key has to specify the name of the date property to be computed.");
    }
  }
  
  /**
   * {@inheritdoc}
   */
  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')};
    // A date cannot be created from a NULL value.
    if ($value === NULL) {
      return NULL;
    }
    $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;
  }
  
  /**
   * {@inheritdoc}
   */
  public function setValue($value, $notify = TRUE) {
    $this->date = $value;
    // Notify the parent of any changes.
    if ($notify && isset($this->parent)) {
      $this->parent
        ->onChange($this->name);
    }
  }
}Members
| Title Sort descending | Modifiers | Object type | Summary | Overriden Title | Overrides | 
|---|---|---|---|---|---|
| DateTimeComputed::$date | protected | property | Cached computed date. | ||
| DateTimeComputed::getValue | public | function | Gets the data value. | Overrides TypedData::getValue | |
| DateTimeComputed::setValue | public | function | Sets the data value. | Overrides TypedData::setValue | |
| DateTimeComputed::__construct | public | function | Constructs a TypedData object given its definition and context. | Overrides TypedData::__construct | |
| DependencySerializationTrait::$_entityStorages | protected | property | An array of entity type IDs keyed by the property name of their storages. | ||
| DependencySerializationTrait::$_serviceIds | protected | property | An array of service IDs keyed by property name used for serialization. | ||
| DependencySerializationTrait::__sleep | public | function | 2 | ||
| DependencySerializationTrait::__wakeup | public | function | #[\ReturnTypeWillChange] | 2 | |
| StringTranslationTrait::$stringTranslation | protected | property | The string translation service. | 3 | |
| StringTranslationTrait::formatPlural | protected | function | Formats a string containing a count of items. | ||
| StringTranslationTrait::getNumberOfPlurals | protected | function | Returns the number of plurals supported by a given language. | ||
| StringTranslationTrait::getStringTranslation | protected | function | Gets the string translation service. | ||
| StringTranslationTrait::setStringTranslation | public | function | Sets the string translation service to use. | 2 | |
| StringTranslationTrait::t | protected | function | Translates a string to the current language or to a given language. | ||
| TypedData::$definition | protected | property | The data definition. | 1 | |
| TypedData::$name | protected | property | The property name. | ||
| TypedData::$parent | protected | property | The parent typed data object. | ||
| TypedData::applyDefaultValue | public | function | Applies the default value. | Overrides TypedDataInterface::applyDefaultValue | 3 | 
| TypedData::createInstance | public static | function | Constructs a TypedData object given its definition and context. | Overrides TypedDataInterface::createInstance | |
| TypedData::getConstraints | public | function | Gets a list of validation constraints. | Overrides TypedDataInterface::getConstraints | 9 | 
| TypedData::getDataDefinition | public | function | Gets the data definition. | Overrides TypedDataInterface::getDataDefinition | |
| TypedData::getName | public | function | Returns the name of a property or item. | Overrides TypedDataInterface::getName | |
| TypedData::getParent | public | function | Returns the parent data structure; i.e. either complex data or a list. | Overrides TypedDataInterface::getParent | |
| TypedData::getPluginDefinition | public | function | Gets the definition of the plugin implementation. | Overrides PluginInspectionInterface::getPluginDefinition | |
| TypedData::getPluginId | public | function | Gets the plugin_id of the plugin instance. | Overrides PluginInspectionInterface::getPluginId | |
| TypedData::getPropertyPath | public | function | Returns the property path of the data. | Overrides TypedDataInterface::getPropertyPath | |
| TypedData::getRoot | public | function | Returns the root of the typed data tree. | Overrides TypedDataInterface::getRoot | |
| TypedData::getString | public | function | Returns a string representation of the data. | Overrides TypedDataInterface::getString | 6 | 
| TypedData::setContext | public | function | Sets the context of a property or item via a context aware parent. | Overrides TypedDataInterface::setContext | |
| TypedData::validate | public | function | Validates the currently set data value. | Overrides TypedDataInterface::validate | |
| TypedDataTrait::$typedDataManager | protected | property | The typed data manager used for creating the data types. | ||
| TypedDataTrait::getTypedDataManager | public | function | Gets the typed data manager. | 2 | |
| TypedDataTrait::setTypedDataManager | public | function | Sets the typed data manager. | 2 | 
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.
