class TimeSpan
Same name in other branches
- 9 core/lib/Drupal/Core/TypedData/Plugin/DataType/TimeSpan.php \Drupal\Core\TypedData\Plugin\DataType\TimeSpan
- 8.9.x core/lib/Drupal/Core/TypedData/Plugin/DataType/TimeSpan.php \Drupal\Core\TypedData\Plugin\DataType\TimeSpan
- 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
- 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\Core\TypedData\PrimitiveBase extends \Drupal\Core\TypedData\TypedData implements \Drupal\Core\TypedData\PrimitiveInterface
- class \Drupal\Core\TypedData\Plugin\DataType\IntegerData extends \Drupal\Core\TypedData\PrimitiveBase implements \Drupal\Core\TypedData\Type\IntegerInterface
- class \Drupal\Core\TypedData\Plugin\DataType\TimeSpan extends \Drupal\Core\TypedData\Plugin\DataType\IntegerData implements \Drupal\Core\TypedData\Type\DurationInterface
- class \Drupal\Core\TypedData\Plugin\DataType\IntegerData extends \Drupal\Core\TypedData\PrimitiveBase implements \Drupal\Core\TypedData\Type\IntegerInterface
- class \Drupal\Core\TypedData\PrimitiveBase extends \Drupal\Core\TypedData\TypedData implements \Drupal\Core\TypedData\PrimitiveInterface
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\DataTypeView 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
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.