fieldStorage = FieldStorageConfig::create([ 'field_name' => Unicode::strtolower($this->randomMachineName()), 'entity_type' => 'entity_test', 'type' => 'daterange', 'settings' => ['datetime_type' => DateRangeItem::DATETIME_TYPE_DATE], ]); $this->fieldStorage->save(); $this->field = FieldConfig::create([ 'field_storage' => $this->fieldStorage, 'bundle' => 'entity_test', 'required' => TRUE, ]); $this->field->save(); $display_options = [ 'type' => 'daterange_default', 'label' => 'hidden', 'settings' => [ 'format_type' => 'fallback', 'separator' => 'UNTRANSLATED', ], ]; EntityViewDisplay::create([ 'targetEntityType' => $this->field->getTargetEntityTypeId(), 'bundle' => $this->field->getTargetBundle(), 'mode' => 'default', 'status' => TRUE, ])->setComponent($this->fieldStorage->getName(), $display_options) ->save(); } /** * Tests the field configured for date-only. */ public function testDateOnly() { $this->fieldStorage->setSetting('datetime_type', DateRangeItem::DATETIME_TYPE_DATE); $field_name = $this->fieldStorage->getName(); // Create an entity. $entity = EntityTest::create([ 'name' => $this->randomString(), $field_name => [ 'value' => '2016-09-21', 'end_value' => '2016-09-21', ], ]); // Dates are saved without a time value. When they are converted back into // a \Drupal\datetime\DateTimeComputed object they should all have the same // time. $start_date = $entity->{$field_name}->start_date; sleep(1); $end_date = $entity->{$field_name}->end_date; $this->assertEquals($start_date->getTimestamp(), $end_date->getTimestamp()); $this->assertEquals('12:00:00', $start_date->format('H:i:s')); $this->assertEquals('12:00:00', $end_date->format('H:i:s')); } }