Personalización de fechas y horas

La manipulación de fechas y horas a menudo requiere un formato específico para varias representaciones basadas en los recursos internos de 4D o en los parámetros del sistema operativo.

Aunque los formatos por defecto son normalmente todo lo que necesita, hay escenarios en los que el formato personalizado es esencial, particularmente para diferentes localizaciones geográficas o requerimientos únicos. En 4D v20 R4, se han hecho avances significativos para satisfacer esta necesidad precisa.

IDH

¿Cuáles son las ventajas?

Como se mencionó en la introducción, el número de opciones de formato es limitado. Si desea redactar un documento para un destino distinto del país en el que fue creado, es probable que los formatos disponibles no sean los deseados por el destinatario. Por lo tanto, es esencial definir, hasta el punto decimal, la manera cómo se mostrarán al final las fechas y las horas.

Además, se ofrecen nuevas posibilidades, como los números de la semana o del trimestre, ¡incluso el día del año!

¿FORMATEO O TRANSFORMACIÓN?

Existen dos formas muy distintas de dar formato a las horas y a las fechas.

La primera consiste en definir un modo de visualización en un formulario. En este caso, una fecha sigue siendo una fecha. Incluso puede mostrarse varias veces, pero de formas diferentes, en un mismo formulario o documento.

La segunda consiste en transformar una fecha en una cadena mediante la función String.

En los dos casos, debe definir una cadena de formato para describir el resultado deseado.

Una cadena de formato común

Tanto si se trata de visualizar (formato simple) como de crear una cadena con la función String, el parámetro necesario (también una cadena) será común a ambos usos.

¿»EEEE dd/MM/aaaa», «QQQQ» o «HH:mm: ss»?

Esta es la parte más emocionante, ya que abre posibilidades casi infinitas. No sólo se puede decidir el orden de los elementos y cómo presentarlos, sino que se puede revelar otra información que antes era inaccesible, al menos de una forma tan sencilla.

La documentación detalla la definición y el resultado obtenido por cada letra o combinación de letras, pero permítame que le ponga algunos ejemplos por fechas…

15/06/2000 -> «QQQQ» -> «2nd quarter» (localizado en su idioma como «2è trimestre» en francés)

17/03/2001 -> «D» -> «76» (76º día del año, 77º en los años bisiestos)

17/03/1954 -> «w» -> «11» (11ª semana del año – ¡varía según el año!)

17/03/1954 -> «eeee» -> «miércoles» ((Puede volver a comprobar que era miércoles 🙂 (También localizado)

Algunos ejemplos con horas

15:00:00 -> «a» -> «PM».

18:00:00 -> «K» -> «6»

13:30:15 -> «hh:mm aa O» -> 01:30 PM GMT+1

Por último… la cadena de formato también puede contener caracteres que, si están entre «a» y «z» o «A y «Z», deben ir entre comillas simples para evitar que se interpreten como caracteres de formato.

15:30:00 -> «HH ‘horas y’ mm ‘minutos'» -> «15 horas y 30 minutos»

 

El comando «String»

El comando String se ha modificado para aceptar una cadena formateada como 2º parámetro, además de las constantes numéricas (como System date short) que pueden seguir utilizándose.

Recordatorio: el comando String puede aceptar una fecha y una hora opcional.

String ( expression {; format {; addTime}} ) -> Function result 

Así que ahora puede formatear fechas y horas con total libertad, ¡incluso ambas al mismo tiempo!

$date:=!1954-03-17!
$time:=?13:24:35?
$format:="EEEE dd MMMM yyyy 'à' HH 'heures,' mm 'minutes et' ss 'secondes'"
$result:=string($date;$format;$time)

El resultado será «mercredi 17 mars 1954 à 13 heures, 24 minutes et 35 secondes» en un sistema francés.

El comando «object set format»

Basado en el mismo principio, este comando permite definir por programación el formato de las fechas y horas que aparecen en los formularios. La sintaxis es exactamente la misma, como se muestra en el ejemplo siguiente:

OBJECT SET FORMAT(*; "myDate"; "(yyyy) MMM dd")  // (2017) Dec 12
OBJECT SET FORMAT(*; "mytime"; "hh'h' mm'mn' ss'sec.'")  // 15h 12mn 17sec. 

Y por último, ¡la interfaz!

Por supuesto, todo lo que se programa utilizando el comando OBJECT SET FORMAT puede hacerse directamente en los formularios. La lista de formatos posibles para las fechas y las horas incluye ahora una línea «personalizada» para introducir la cadena de formato deseada. Naturalmente, esta cadena se crea de la misma forma que los comandos listados anteriormente.

blank

Nuevo modelo de entrada cuando el formato de fecha se define como Personalizado

Conclusión

En resumen, esta nueva funcionalidad le da mucha libertad a la hora de mostrar fechas y horas. La simplificación del código de sus aplicaciones reducirá el tiempo de desarrollo y permitirá una mejor optimización de los formularios. Consulte la documentación para más detalles sobre esta funcionalidad.

 

Roland Lannuzel
- Propietario de Producto y Experto en 4D - Después de estudiar electrónica, Roland se dedicó a la informática industrial como desarrollador y consultor, construyendo soluciones para clientes con una variedad de bases de datos y tecnologías. A finales de los años 80 se enamoró de 4D y lo ha utilizado para escribir aplicaciones de negocio que incluyen sistemas de contabilidad, facturación y correo electrónico.Eventualmente se unió a la compañía en 1997, las valiosas contribuciones de Roland incluyen el diseño de especificaciones, herramientas de prueba, demos, así como la formación y hablar con la comunidad 4D en muchas conferencias. Continúa dando forma activamente al futuro de 4D definiendo nuevas características y herramientas de desarrollo de bases de datos.