A manipulação de datas e horas frequentemente requer formatação específica para várias representações baseadas nos recursos internos de 4D ou configurações do sistema operacional.
Enquanto os formatos padrão são geralmente tudo o que precisa, há cenários em que a formatação personalizada é essencial, particularmente para diferentes localizações geográficas ou requisitos únicos. Em 4D v20 R4, avanços significativos foram feitos para atender a essa necessidade precisa
HDI
Quais são os benefícios?
Como mencionado na introdução, o número de opções de formatação é limitado. Se deseja escrever um documento para um destino diferente do país em que foi criado, os formatos disponíveis provavelmente não serão os desejados pelo destinatário. É, por isso, essencial definir, até à casa decimal, a forma como as datas e as horas serão apresentadas no final.
Além disso, são oferecidas novas possibilidades, como os números da semana ou do trimestre ou mesmo o dia do ano!
FORMATAÇÃO OU TRANSFORMAÇÃO?
Existem duas formas muito diferentes de formatar horas e datas.
A primeira consiste em definir um modo de apresentação num formulário. Neste caso, uma data continua a ser uma data. Pode até ser apresentada várias vezes, mas de formas diferentes, num único formulário ou documento.
A segunda é transformar uma data numa cadeia de caracteres utilizando a função String.
Em ambos os casos, é necessário definir uma cadeia de formatação para descrever o resultado pretendido.
Uma string de formatação comum
Quer se trate de apresentar (formatação simples) ou de criar uma string através da função String, o parâmetro necessário (também uma cadeia) será comum a ambas as utilizações.
“EEEE dd/MM/aaaa”, “QQQQ” ou “HH:mm: ss”?
Esta é a parte mais interessante, abrindo possibilidades quase infinitas. Não só se pode decidir a ordem dos elementos e a forma de os apresentar, como também se podem revelar outras informações que antes eram inacessíveis, pelo menos de uma forma tão simples.
A documentação detalha a definição e o resultado obtido por cada letra ou combinação de letras, mas permita-me que lhe dê alguns exemplos de datas…
15/06/2000 -> “QQQQ” -> “2º trimestre” (localizado na sua língua como “2è trimestre” em francês !)
17/03/2001 -> “D” -> “76” (76º dia do ano, 77º nos anos bissextos)
17/03/1954 -> “w” -> “11” (11ª semana do ano – que varia ao longo do ano!)
17/03/1954 -> “eeee” -> “Wednesday” ((Pode verificar que era uma quarta-feira 🙂 (também localizado)
Alguns exemplos com horas
15:00:00 -> “a” -> “PM”
18:00:00 -> “K” -> “6”
13:30:15 -> “hh:mm aa O” -> 01:30 PM GMT+1
Finalmente… a cadeia de formatação também pode conter caracteres que, se estiverem entre “a” e “z” ou “A e “Z”, devem ser colocados entre aspas simples para evitar que sejam interpretados como caracteres de formatação.
15:30:00 -> “HH ‘horas e’ mm ‘minutos'” -> “15 horas e 30 minutos”
O comando “String
O comando String foi modificado para aceitar uma string formatada como 2º parâmetro, para além das constantes numéricas (como System date short) que ainda podem ser usadas.
Lembrete: o comando String pode aceitar uma data e uma hora opcional!
String ( expression {; format {; addTime}} ) -> Function result
Assim, agora pode formatar datas e horas com total liberdade, mesmo ambas ao mesmo tempo!
$date:=!1954-03-17!
$time:=?13:24:35?
$format:="EEEE dd MMMM yyyy 'à' HH 'hores,' mm 'minutes et' ss 'secondes'"
$result:=string($date;$format;$time)
O resultado será “mercredi 17 mars 1954 à 13 heures, 24 minutes et 35 secondes” num sistema francês!
O comando “object set format
Baseado no mesmo princípio, este comando permite-lhe definir o formato das datas e horas apresentadas nos formulários através de programação. A sintaxe é exatamente a mesma, como mostra o exemplo abaixo:
OBJECT SET FORMAT(*; "myDate"; "(yyyy) MMM dd") // (2017) Dec 12
OBJECT SET FORMAT(*; "mytime"; "hh'h' mm'mn' ss'sec.'") // 15h 12mn 17sec.
E finalmente, a interface!
Naturalmente, tudo o que é programado através do comando OBJECT SET FORMAT pode ser feito diretamente nos formulários. A lista de formatos possíveis para datas e horas inclui agora uma linha “personalizada” para introduzir a cadeia de formatação desejada. Naturalmente, esta cadeia é construída da mesma forma que os comandos listados acima.
Novo padrão de entrada quando o formato de data é definido como personalizado
Conclusão
Em suma, esta nova funcionalidade dará muita liberdade na apresentação de datas e horas. A simplificação do código das suas aplicações reduzirá o tempo de desenvolvimento e permitirá uma melhor otimização do formulário. Consulte a documentação para obter mais pormenores sobre esta funcionalidade.