Pregunta:
Tengo un campo de fecha estándar de Drupal 'Mi fecha' (field_my_date). Puedo obtener su valor:
$node->field_my_date->value // returns: "2017-12-14T08:00:00"
Pero quiero obtener una cadena de fecha formateada, que debería verse así: "14.12.2017".
Si se analiza el campo en la cáscara interactiva (drush núcleo-cli), entonces veo, que pueda conseguir la DateTimeFieldItemList objeto o DateTimeItem objeto:
>>> $node->field_my_date
=> Drupal\datetime\Plugin\Field\FieldType\DateTimeFieldItemList {#8836
0: Drupal\datetime\Plugin\Field\FieldType\DateTimeItem {#8841},
}
>>> $node->field_my_date[0]
=> Drupal\datetime\Plugin\Field\FieldType\DateTimeItem {#8841
value: [
"value" => "2017-12-14T08:00:00",
],
}
Pero no he encontrado ningún método para reformatear la cadena de fecha. ¿Existe alguna posibilidad de definir el formato de la cadena de fecha de salida? O tengo que reformatear la cadena de salida, por ejemplo, así:
date("j.n.Y", strtotime($node->field_my_date->value));
Respuesta:
Un campo de fecha tiene dos propiedades, value
para almacenar la fecha en UTC y date
, un campo calculado que devuelve un objeto DrupalDateTime, en el que puede usar los métodos getTimestamp () o format ():
// get unix timestamp
$timestamp = $node->field_date->date->getTimestamp();
// get a formatted date
$date_formatted = $node->field_date->date->format('Y-m-d H:i:s');
Para un campo de rango de fechas:
// formatted start date
$start_date_formatted = $node->field_date->start_date->format('Y-m-d H:i:s');
// formatted end date
$end_date_formatted = $node->field_date->end_date->format('Y-m-d H:i:s');