Campos de rango de fecha en las views

En algunos casos podemos tener un campo de tipo fecha que tiene un valor de inicio y un valor de fin. Esto se conoce como un "rango de fechas".

Por ejemplo: 01/01/1970 - 31/12/1970

Drupal lo gestiona todo, y si queremos renderizar el campo en el frontend podemos configurar en qué formato de fechas queremos mostrarlo.

El formato de fechas, para quien no lo sepa, permite especificar si queremos mostrar las fechas como día/mes/año, mostrar solo la hora, mostrar solo el año, mostrar el día de la semana, etc.

El problema podemos tenerlo si queremos solamente mostrar la fecha de inicio o la fecha fin, y no que se muestren las dos juntas. Actualmente no es tan fácil como debería, sobre todo si quieres usar un formato concreto.

Puedes ver sobre el tema en https://www.drupal.org/project/drupal/issues/2827055

En el proyecto en el que estoy, teníamos el problema de que en una views solo se tenía que mostrar la fecha de inicio con el formato d/m/Y.

La opción de reescribir resultados permite únicamente mostrar uno de los dos valores, pero pagas el precio de que pierdes el formato de la fecha, por lo que entonces no se mostraba como d/mY.

La primera solución fue usar funciones twig para dar formato de fecha al token que contiene solo la fecha inicial sin formato:

{{ field_name_value |date("d/m/Y") }}

El problema es que con esto estamos ignorando el timezone del país del usuario, y esto significa que si la hora es cercana a la medianoche podemos tener problemas de no mostrar el día correcto.

Así que otra opción es utilizar el campo con las dos fechas, utilizando el formato y el cálculo del timezone que tiene Drupal y luego en el twig separar las dos fecha por el "-" y únicamente mostrar la primera.

{{ field_name | split(' - ')[0] | striptags}}

No es la solución más limpia, pero nos evitamos tener que hacer código en un módulo custom o tener que aplicar parches al core. La parte buena es que esto está en la configuración del campo de la views, por lo que si en un futuro se ha de modificar esa views entonces ves que hay una reescritura para ese campo.

Para estas cosas es una bendición saber usar Twig y que las Views de Drupal permitan usar Twig en las reescrituras de los campos.

¿Tienes algún proyecto en mente?

Si quieres hacer algo en Drupal tal vez puedas contratarme.

Ya sea para consultoría, desarrollo o mantenimiento de sitios web Drupal.