class TimeSpan

Same name in other branches
  1. 9 core/lib/Drupal/Core/TypedData/Plugin/DataType/TimeSpan.php \Drupal\Core\TypedData\Plugin\DataType\TimeSpan
  2. 8.9.x core/lib/Drupal/Core/TypedData/Plugin/DataType/TimeSpan.php \Drupal\Core\TypedData\Plugin\DataType\TimeSpan
  3. 11.x 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.

Hierarchy

Expanded class hierarchy of TimeSpan

See also

\Drupal\Core\TypedData\Type\DurationIso8601

1 string reference to 'TimeSpan'
TypedDataTest::testGetAndSet in core/tests/Drupal/KernelTests/Core/TypedData/TypedDataTest.php
Tests the basics around constructing and working with typed data objects.

File

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

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

Title Sort descending Modifiers Object type Summary Overriden Title Overrides
DependencySerializationTrait::$_entityStorages protected property
DependencySerializationTrait::$_serviceIds protected property
DependencySerializationTrait::__sleep public function 1
DependencySerializationTrait::__wakeup public function 2
IntegerData::getCastedValue public function Overrides PrimitiveInterface::getCastedValue
PrimitiveBase::$value protected property The data value. 1
PrimitiveBase::getValue public function Overrides TypedData::getValue 1
PrimitiveBase::setValue public function Overrides TypedData::setValue 1
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.
TimeSpan::getDuration public function Overrides DurationInterface::getDuration
TimeSpan::setDuration public function 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 Overrides TypedDataInterface::applyDefaultValue 3
TypedData::createInstance public static function Overrides TypedDataInterface::createInstance
TypedData::getConstraints public function Overrides TypedDataInterface::getConstraints 8
TypedData::getDataDefinition public function Overrides TypedDataInterface::getDataDefinition
TypedData::getName public function Overrides TypedDataInterface::getName
TypedData::getParent public function Overrides TypedDataInterface::getParent
TypedData::getPluginDefinition public function Overrides PluginInspectionInterface::getPluginDefinition
TypedData::getPluginId public function Overrides PluginInspectionInterface::getPluginId
TypedData::getPropertyPath public function Overrides TypedDataInterface::getPropertyPath
TypedData::getRoot public function Overrides TypedDataInterface::getRoot
TypedData::getString public function Overrides TypedDataInterface::getString 6
TypedData::setContext public function Overrides TypedDataInterface::setContext
TypedData::validate public function Overrides TypedDataInterface::validate
TypedData::__construct public function Constructs a TypedData object given its definition and context. 4
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.