Personalização personalizada para datas e horários

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.

blank

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.

 

Roland Lannuzel
- Proprietário do produto & Especialista 4D - Depois de estudar electrónica, a Roland entrou nas TI industriais como desenvolvedor e consultor, construindo soluções para clientes com uma variedade de bases de dados e tecnologias. No final dos anos 80, apaixonou-se pela 4D e utilizou-a para escrever aplicações comerciais que incluem sistemas de contabilidade, facturação e correio electrónico. Juntando-se à empresa em 1997, as valiosas contribuições de Roland incluem a concepção de especificações, ferramentas de teste, demonstrações, bem como formação e palestras para a comunidade 4D em muitas conferências. Ele continua a moldar activamente o futuro da 4D, definindo novas características e ferramentas de desenvolvimento de bases de dados.