Personalizzazione su misura per date e orari

Tradotto automaticamente da Deepl

La manipolazione di date e orari richiede spesso una formattazione specifica per varie rappresentazioni, basata sulle risorse interne di 4D o sulle impostazioni del sistema operativo.

Anche se i formati predefiniti sono di solito sufficienti, ci sono scenari in cui la formattazione personalizzata è essenziale, in particolare per le diverse località geografiche o per requisiti unici. In 4D v20 R4 sono stati fatti notevoli passi avanti per soddisfare questa precisa esigenza

HDI

Quali sono i vantaggi?

Come accennato nell’introduzione, il numero di opzioni di formattazione è limitato. Se si desidera scrivere un documento per una destinazione diversa dal Paese in cui è stato creato, è probabile che i formati disponibili non siano quelli desiderati dal destinatario. È quindi essenziale definire, fino alla virgola, il modo in cui date e orari saranno visualizzati alla fine.

Inoltre, vengono offerte nuove possibilità, come i numeri della settimana o del trimestre o persino il giorno dell’anno!

FORMATTAZIONE O TRASFORMAZIONE?

Esistono due modi molto diversi di formattare orari e date.

Il primo consiste nel definire una modalità di visualizzazione in un modulo. In questo caso, una data rimane una data. Può anche essere visualizzata più volte, ma in modi diversi, in un unico modulo o documento.

La seconda consiste nel trasformare una data in una stringa utilizzando la funzione Stringa.

In entrambi i casi, è necessario definire una stringa di formattazione per descrivere il risultato desiderato.

Una catena di formattazione comune

Che si tratti della visualizzazione (formattazione semplice) o della creazione di una stringa tramite la funzione Stringa, il parametro necessario (anch’esso una stringa) sarà comune a entrambi gli usi.

“EEEE gg/MM/aaaa”, “QQQQ” o “HH:mm: ss”?

Questa è la parte più interessante, che apre possibilità quasi infinite. Non solo si può decidere l’ordine degli elementi e come presentarli, ma si possono rivelare altre informazioni prima inaccessibili, almeno in modo così semplice.

La documentazione illustra in dettaglio la definizione e il risultato ottenuto da ogni lettera o combinazione di lettere, ma permettetemi di farvi qualche esempio di date…

15/06/2000 -> “QQQQ” -> “2° trimestre” (localizzato nella vostra lingua come “2è trimestre” in francese !)

17/03/2001 -> “D” -> “76” (76° giorno dell’anno, 77° negli anni bisestili)

17/03/1954 -> “w” -> “11” (11a settimana dell’anno – che varia a seconda dell’anno!)

17/03/1954 -> “eeee” -> “Wednesday” ((Si può ricontrollare che fosse un mercoledì 🙂 (Anche localizzato)

Alcuni esempi con le ore

15:00:00 -> “a” -> “PM”

18:00:00 -> “K” -> “6”

13:30:15 -> “hh:mm aa O” -> 01:30 PM GMT+1

Infine… la stringa di formattazione può contenere anche caratteri che, se compresi tra “a” e “z” o “A e “Z”, devono essere racchiusi tra apici singoli per evitare di essere interpretati come caratteri di formattazione.

15:30:00 -> “HH ‘ore e’ mm ‘minuti'” -> “15 ore e 30 minuti”.

Il comando “Stringa

Il comando Stringa è stato modificato per accettare una stringa formattata come secondo parametro, oltre alle costanti numeriche (come System date short) che possono ancora essere utilizzate.

Ricordiamo che il comando String può accettare una data e un’ora opzionale!

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

Quindi ora è possibile formattare date e orari in totale libertà, anche entrambi contemporaneamente!

$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)

Il risultato sarà “mercredi 17 mars 1954 à 13 heures, 24 minutes et 35 secondes” su un sistema francese!

Il comando “object set format

Basato sullo stesso principio, questo comando consente di definire il formato delle date e degli orari visualizzati nei moduli mediante la programmazione. La sintassi è esattamente la stessa, come mostrato nell’esempio seguente:

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

E infine, l’interfaccia!

Naturalmente, tutto ciò che viene programmato tramite il comando IMPOSTA OGGETTO FORMATO può essere fatto direttamente nei moduli. L’elenco dei formati possibili per le date e gli orari comprende ora una riga “personalizzata” per inserire la stringa di formattazione desiderata. Naturalmente, questa stringa viene costruita nello stesso modo dei comandi sopra elencati.

blank

Nuovo modello di inserimento quando il formato Data è impostato su Personalizzato

Conclusione

In breve, questa nuova funzione offre molta libertà nella visualizzazione di date e orari. La semplificazione del codice delle applicazioni ridurrà i tempi di sviluppo e consentirà una migliore ottimizzazione dei moduli. Per ulteriori dettagli su questa funzione, consultare la documentazione.

Roland Lannuzel
- Product Owner ed esperto di 4D - Dopo aver studiato elettronica, Roland è passato all'IT industriale come sviluppatore e consulente, realizzando soluzioni per i clienti con una varietà di database e tecnologie. Alla fine degli anni '80 si è innamorato di 4D e lo ha utilizzato per scrivere applicazioni aziendali che includono sistemi di contabilità, fatturazione e posta elettronica. Entrato a far parte dell'azienda nel 1997, Roland ha dato il suo prezioso contributo progettando specifiche, strumenti di test e demo, oltre a formare e parlare alla comunità 4D in occasione di numerose conferenze. Continua a plasmare attivamente il futuro di 4D definendo nuove funzionalità e strumenti di sviluppo di database.