Datetime Extras
Extiende los módulos Datetime y Datetime Range del core con tipos de campo, widgets y formateadores adicionales para un manejo más flexible de fecha/hora.
datetime_extras
Instalar
composer require 'drupal/datetime_extras:8.x-1.2'
Overview
El módulo Datetime Extras proporciona funcionalidad adicional para extender los módulos Datetime y Datetime Range del core. Añade un nuevo tipo de campo "Solo hora" para almacenar valores de tiempo sin fechas, así como varios widgets mejorados para campos de fecha/hora y rangos de fechas.
Las características principales incluyen un widget de rango de fechas basado en duración que permite a los creadores de contenido especificar una hora de fin como un desplazamiento (duración) desde la fecha/hora de inicio en lugar de una hora de fin absoluta. También proporciona un widget de lista de selección solo para fechas que elimina la selección de hora cuando solo es relevante la fecha, y un widget de fecha/hora configurable con rangos de años y incrementos de tiempo personalizables.
Features
- Tipo de campo Solo hora que almacena valores de tiempo sin componentes de fecha, útil para horarios, horas de atención o eventos recurrentes basados en tiempo
- Widget de rango de fecha y hora con duración que permite a los creadores de contenido especificar una fecha/hora de fin absoluta o un desplazamiento de duración desde la hora de inicio
- Widget de lista de selección sin hora que muestra campos de fecha/hora usando listas de selección solo para componentes de fecha, ocultando la selección de hora innecesaria
- Widget de fecha y hora configurable con límites de rango de años personalizables y configuración de incrementos de tiempo para entradas de fecha HTML5
- Widget Solo hora que proporciona una interfaz de entrada limpia solo para tiempo para el tipo de campo Solo hora
- Ajuste automático de granularidad de duración para campos solo de fecha vs campos de fecha/hora
- Soporte para varias opciones de orden de partes de fecha incluyendo Solo año, Mes/Año y combinaciones Año/Mes
Use Cases
Programación de eventos con duración flexible
Al crear eventos, los editores de contenido pueden especificar una fecha/hora de inicio y luego elegir establecer la hora de fin directamente o definir la duración del evento. Por ejemplo, una reunión recurrente que siempre dura 1 hora, los editores pueden simplemente seleccionar '1 hora' de duración en lugar de calcular e ingresar la hora de fin manualmente cada vez.
Gestión de horarios de atención
Use el tipo de campo Solo hora para almacenar horarios de apertura y cierre de negocios sin asociarlos con fechas específicas. Esto es ideal para mostrar horarios de tiendas, ventanas de disponibilidad de citas o franjas horarias de servicio.
Entrada de fechas históricas con selección solo de año
Para tipos de contenido que necesitan capturar fechas históricas donde solo importa el año (como años de nacimiento, fechas de fundación o años de publicación), use el widget Lista de selección, sin hora configurado con orden de fecha Solo año (Y). Esto simplifica la entrada de datos y evita confusión sobre meses o días desconocidos.
Campos solo de fecha sin desorden de hora
Cuando se usa un campo de fecha/hora pero la hora es irrelevante (como fechas de publicación o fechas de eventos), el widget Lista de selección, sin hora elimina completamente la selección de hora, proporcionando una interfaz más limpia para los editores de contenido.
Rangos de fecha configurables para diferentes tipos de contenido
Use el widget Fecha y hora configurable para restringir la selección de fechas a rangos apropiados. Por ejemplo, un campo 'Fecha de nacimiento' podría usar '-120:+0' para permitir solo fechas pasadas, mientras que un campo 'Fecha de evento futuro' podría usar '+0:+10' para permitir solo fechas en los próximos 10 años.
Creación de eventos de varios días
Para conferencias o eventos de varios días, el widget de rango de fecha y hora con duración configurado para campos solo de fecha permite a los editores especificar '3 días' como duración, calculando automáticamente la fecha de fin. El widget maneja el conteo amigable para humanos (Día 1 al Día 3) vs el cálculo de desplazamiento de computadora.
Tips
- Al usar el widget de rango de fecha y hora con duración con campos solo de fecha, la granularidad se limita automáticamente a solo días (las opciones de horas, minutos, segundos están ocultas)
- El widget Lista de selección, sin hora hereda configuraciones del DateTimeDatelistWidget del core pero añade opciones extendidas de orden de fecha (Y, MY, YM) para una visualización más flexible
- Para el widget Fecha y hora configurable, use rangos de años relativos como '-50:+50' para ajustarse automáticamente con el paso del tiempo, o rangos absolutos como '2020:2030' para límites fijos
- El campo Solo hora almacena valores en el formato de almacenamiento de fecha/hora estándar pero solo el componente de tiempo es significativo - la porción de fecha se genera automáticamente
- El módulo Duration Field solo es requerido si desea usar el widget basado en duración; otras características funcionan sin él
Technical Details
Hooks 2
hook_help
Proporciona texto de ayuda para la página de ayuda del módulo en /admin/help/datetime_extras
hook_field_widget_info_alter
Elimina condicionalmente el widget daterange_duration si el módulo Duration Field no está instalado o es una versión antigua incompatible
Troubleshooting 4
Asegúrese de que el módulo Duration Field (versión 8.x-2.0-rc3 o superior) esté instalado y habilitado. El widget se oculta automáticamente si Duration Field no está disponible o es una versión antigua incompatible. Instálelo con: composer require 'drupal/duration_field:^2.0' && drush en duration_field
El widget Solo hora incluye validación personalizada para manejar valores solo de tiempo. Asegúrese de estar usando el widget Solo hora (time_only_field_default) con campos Solo hora. El widget añade el objeto DrupalDateTime necesario que requiere la validación del core.
El módulo ajusta la visualización de duración para campos solo de fecha para coincidir con el conteo humano (basado en 1). Un evento de 3 días que comienza el lunes y termina el miércoles muestra '3 días' de duración, pero internamente almacena un desplazamiento de 2 días. Este es un comportamiento intencional.
Si ve advertencias de obsolescencia para DateConfigurableListWidget, migre sus campos para usar el widget 'Lista de selección, sin hora' (datetime_datelist_no_time) en su lugar. El widget obsoleto será eliminado en la versión 8.x-2.0.