Přizpůsobení na míru pro data a časy

Automaticky přeloženo z Deepl

Manipulace s daty a časy často vyžaduje specifické formátování pro různá zobrazení na základě interních zdrojů 4D nebo nastavení operačního systému.

Ačkoli výchozí formáty obvykle stačí, existují scénáře, kdy je vlastní formátování nezbytné, zejména pro různé zeměpisné lokality nebo jedinečné požadavky. Ve verzi 4D v20 R4 došlo k významným pokrokům, aby bylo možné vyhovět právě těmto potřebám

HDI

Jaké jsou výhody?

Jak bylo zmíněno v úvodu, počet možností formátování je omezený. Pokud chcete napsat dokument pro jiné místo určení, než je země, ve které byl vytvořen, dostupné formáty pravděpodobně nebudou odpovídat formátům požadovaným příjemcem. Je proto nezbytné definovat až na desetinnou čárku, jak se budou data a časy ve výsledku zobrazovat.

Kromě toho se nabízejí nové možnosti, jako jsou čísla týdnů nebo čtvrtletí nebo dokonce den v roce!

FORMÁTOVÁNÍ NEBO TRANSFORMACE?

Existují dva velmi odlišné způsoby formátování časů a dat.

Prvním je definování režimu zobrazení ve formuláři. V tomto případě zůstává datum datem. V jednom formuláři nebo dokumentu může být dokonce zobrazeno několikrát, ale různými způsoby.

Druhým způsobem je transformace data na řetězec pomocí funkce String.

V obou případech je nutné definovat formátovací řetězec, který popisuje požadovaný výsledek.

Běžný formátovací řetězec

Ať už se jedná o zobrazení (prosté formátování), nebo o vytvoření řetězce pomocí funkce String, potřebný parametr (rovněž řetězec) bude společný pro obě použití.

„EEEE dd/MM/yyyy“, „QQQQ“ ou „HH:mm: ss“?

To je nejzajímavější část, která otevírá téměř nekonečné možnosti. Nejenže můžete rozhodovat o pořadí prvků a způsobu jejich prezentace, ale lze odhalit i další informace, které byly dříve alespoň takto jednoduše nedostupné.

V dokumentaci je podrobně popsána definice a výsledek získaný pomocí jednotlivých písmen nebo jejich kombinací, ale dovolte mi uvést několik příkladů pro data…

15/06/2000 -> „QQQQ“ -> „2. čtvrtletí“ (lokalizováno ve vašem jazyce jako „2è trimestre“ ve francouzštině !)

17/03/2001 -> „D“ -> „76“ (76. den v roce, 77. den v přestupném roce)

17/03/1954 -> „w“ -> „11“ (11. týden v roce – což se liší podle roku!)

17/03/1954 -> „eeee“ -> „Wednesday“ ((Můžete si dvakrát ověřit, že to byla středa 🙂 (také lokalizováno)

Několik příkladů s hodinami

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

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

13:30:15 -> „hh:mm aa O“ -> 13:30 GMT+1

A konečně… formátovací řetězec může také obsahovat znaky, které, pokud jsou mezi „a“ a „z“ nebo „A a „Z“, musí být uzavřeny v jednoduchých uvozovkách, aby nebyly interpretovány jako formátovací znaky.

15:30:00 -> „HH ‚hodiny a‘ mm ‚minuty'“ -> „15 hodin a 30 minut“.

Příkaz „String“

Příkaz „String“ byl upraven tak, aby kromě číselných konstant (jako je System date short), které lze stále používat, přijímal jako druhý parametr formátovaný řetězec.

Připomínáme: Příkaz String může přijímat datum a volitelný čas!

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

Nyní tedy můžete formátovat data a časy zcela libovolně, dokonce obojí současně!

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

Výsledkem bude „mercredi 17 mars 1954 à 13 heures, 24 minutes et 35 secondes“ ve francouzském systému !

Příkaz „Object set format“

Na stejném principu založený příkaz umožňuje programově definovat formát dat a časů zobrazovaných ve formulářích. Syntaxe je naprosto stejná, jak ukazuje následující příklad:

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

A konečně rozhraní!

Vše, co se programuje prostřednictvím příkazu OBJECT SET FORMAT, lze samozřejmě provádět přímo ve formulářích. Seznam možných formátů pro data a časy nyní obsahuje „vlastní“ řádek pro zadání požadovaného formátovacího řetězce. Tento řetězec je samozřejmě konstruován stejným způsobem jako výše uvedené příkazy.

blank

Nový vzor zadávání, když je formát data nastaven na hodnotu Vlastní

Závěr

Stručně řečeno, tato nová funkce vám dává velkou volnost při zobrazování dat a časů. Zjednodušení kódu vašich aplikací zkrátí dobu vývoje a umožní lepší optimalizaci formulářů. Další podrobnosti o této funkci naleznete v dokumentaci.

Roland Lannuzel
- Product Owner & 4D Expert - Po studiu elektroniky se Roland věnoval průmyslovým IT jako vývojář a konzultant, který vytvářel řešení pro zákazníky s různými databázemi a technologiemi. Koncem 80. let se zamiloval do 4D a používal jej při psaní podnikových aplikací, které zahrnovaly účetní, fakturační a e-mailové systémy. nakonec se připojil ke společnosti v roce 1997 a Rolandův cenný přínos zahrnuje návrh specifikací, testovacích nástrojů, demoverzí a také školení a přednášky pro komunitu 4D na mnoha konferencích. Nadále aktivně utváří budoucnost 4D definováním nových funkcí a nástrojů pro vývoj databází.