Este equipo de expertos pasados ciertos días de trabajo y de recopilar de información, dimos con la solución, nuestro deseo es que todo este artículo sea de utilidad para tu trabajo.
Solución:
Los campos de fecha y hora en Drupal 8 se almacenan como cadenas. Entonces necesitas convertirlo en string.
Puede utilizar el método de formato, por ejemplo
$formatted_date = $date->format('Y-m-d H:i:s');
Consulte Inserción del valor del formulario de campo de fecha y hora
También puedes usar T como separador,
Me gusta:
DateTime::format("Y-m-dTH:i:s"); //need a escape character in front of T.
Consulte ¿Por qué no se guarda mi campo de fecha y hora?
Si su campo de fecha no es un FECHA Y HORA pero un FECHA, use un formato diferente. Y una mejor solución sería usar la constante del objeto Datime para obtener el formato.
constant DATETIME_STORAGE_FORMAT :: string(12) "Y-m-dTH:i:s"
constant DATE_STORAGE_FORMAT :: string(5) "Y-m-d"
Ejemplo de trabajo.
$dtime = DateTime::createFromFormat("m/d/Y - G:i", $row->Date); // not needed
$dtime->setTimezone(new DateTimezone(DateTimeItemInterface::STORAGE_TIMEZONE));
$dtimeFormat = $dtime->format(DateTimeItemInterface::DATE_STORAGE_FORMAT);
$article->set('field_date', $dtimeFormat);
Esto es lo que funcionó para mí:
$timestamp = Drupal::time()->getRequestTime();
$date = DrupalDateTime::createFromTimestamp($timestamp, 'UTC');
$entity->field_date = $date->format("Y-m-dTH:i:s");
Valoraciones y comentarios
Más adelante puedes encontrar las reseñas de otros sys admins, tú aún tienes la libertad de insertar el tuyo si dominas el tema.