You are here

class TimeSpan in Drupal 8

Same name and namespace in other branches
  1. 9 core/lib/Drupal/Core/TypedData/Plugin/DataType/TimeSpan.php \Drupal\Core\TypedData\Plugin\DataType\TimeSpan

The time span data type represents durations as number of seconds.

The plain value is the (integer) number of seconds. Note that time spans only map correctly to durations as long as the number of seconds does not exceed a day (there is already a difference in applying a duration of a day or 24 hours due to daylight savings). If that's an issue, consider using \Drupal\Core\TypedData\Type\DurationIso8601 instead.

Plugin annotation


@DataType(
  id = "timespan",
  label = @Translation("Time span in seconds")
)

Hierarchy

Expanded class hierarchy of TimeSpan

See also

\Drupal\Core\TypedData\Type\DurationIso8601

File

core/lib/Drupal/Core/TypedData/Plugin/DataType/TimeSpan.php, line 23

Namespace

Drupal\Core\TypedData\Plugin\DataType
View source
class TimeSpan extends IntegerData implements DurationInterface {

  /**
   * {@inheritdoc}
   */
  public function getDuration() {
    if ($this->value) {

      // Keep the duration in seconds as there is generally no valid way to
      // convert it to days, months or years.
      return new \DateInterval('PT' . $this->value . 'S');
    }
  }

  /**
   * {@inheritdoc}
   */
  public function setDuration(\DateInterval $duration, $notify = TRUE) {

    // Note that this applies the assumption of 12 month's a 30 days and
    // each year having 365 days. There is no accurate conversion for time spans
    // exceeding a day.
    $this->value = $duration->y * 365 * 24 * 60 * 60 + $duration->m * 30 * 24 * 60 * 60 + $duration->d * 24 * 60 * 60 + $duration->h * 60 * 60 + $duration->i * 60 + $duration->s;

    // Notify the parent of any changes.
    if ($notify && isset($this->parent)) {
      $this->parent
        ->onChange($this->name);
    }
  }

}

Members

Namesort descending Modifiers Type Description Overrides
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 1
DependencySerializationTrait::__wakeup public function 2
IntegerData::getCastedValue public function Gets the primitive data value casted to the correct PHP type. Overrides PrimitiveInterface::getCastedValue
PrimitiveBase::$value protected property The data value. 1
PrimitiveBase::getValue public function Gets the data value. Overrides TypedData::getValue 1
PrimitiveBase::setValue public function Sets the data value. Overrides TypedData::setValue 1
StringTranslationTrait::$stringTranslation protected property The string translation service. 1
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.
TimeSpan::getDuration public function Returns the duration. Overrides DurationInterface::getDuration
TimeSpan::setDuration public function Sets the duration. Overrides DurationInterface::setDuration
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
TypedData::__construct public function Constructs a TypedData object given its definition and context. 3
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