3 namespace Drupal\datetime_range;
5 use Drupal\Core\Field\FieldItemListInterface;
8 * Provides friendly methods for datetime range.
10 trait DateTimeRangeTrait {
15 public function viewElements(FieldItemListInterface $items, $langcode) {
17 $separator = $this->getSetting('separator');
19 foreach ($items as $delta => $item) {
20 if (!empty($item->start_date) && !empty($item->end_date)) {
21 /** @var \Drupal\Core\Datetime\DrupalDateTime $start_date */
22 $start_date = $item->start_date;
23 /** @var \Drupal\Core\Datetime\DrupalDateTime $end_date */
24 $end_date = $item->end_date;
26 if ($start_date->getTimestamp() !== $end_date->getTimestamp()) {
28 'start_date' => $this->buildDateWithIsoAttribute($start_date),
29 'separator' => ['#plain_text' => ' ' . $separator . ' '],
30 'end_date' => $this->buildDateWithIsoAttribute($end_date),
34 $elements[$delta] = $this->buildDateWithIsoAttribute($start_date);
36 if (!empty($item->_attributes)) {
37 $elements[$delta]['#attributes'] += $item->_attributes;
38 // Unset field item attributes since they have been included in the
39 // formatter output and should not be rendered in the field template.
40 unset($item->_attributes);