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.
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.