Introduction
Important things to keep in mind when it comes to Drupal 8 Date fields:
- The core Date field is stored as a string
[ varchar(20) ]
in the database and gives you the option to store:- the date only:
2021-12-31
- or the date with time:
2021-12-31T23:59:59
- the date only:
- The Timestamp field is stored as an int
[ int(11) ]
in the database and represents a the Unix time. - Drupal 8 stores all date fields in the UTC timezone. Timezone information is not stored with the date fields.
Setting date values programmatically
Assume that $node
has the following fields:
field_date
: Date field (date only)field_datetime
: Date field (date and time)field_timestamp
: Timestamp field
Here is one way to set the field values programmatically:
// Set dates to arbitrary values
$node->set('field_date', '2021-12-31');
$node->set('field_datetime', '2021-12-31T22:00:00');
$node->set('field_timezone', '1596663532');
// Set dates to current time
$node->set('field_date', date('Y-m-d', time()));
$node->set('field_datetime', date('Y-m-d\TH:i:s', time()));
$node->set('field_timezone', time());