Odpovědět Programovanie makier v LibreOffice: Bližší pohľad na dátum a čas – funkcie CDateToISO a CDateFromISO 2. 03. 2018, 19:24:19
Opravdu dobře podané a poučné.
Já bych jenom doplnil že tyto funkce se dají používat zejména při přenosech směrem z Calcu > CSV a opačně CSV > Calc.
Existuje sice problém s čísly v textové formě, ale to je řešitelné. Přes to datumy z cizích zdrojů často chodí ve formě čísla 43161 - což je dnešní datum 2.3.2018, které by se v formě ISO mělo objevit jako 20180302. Klasické číslo přečte formát buňky většinou správně v každé lokalizaci a o ISO nejde.
Navíc k takovému celému číslu se uvádí čísla za desetinnou čárkou (ve skutečnosti je to v CSV tečka). Jde o čas.
Je pravdou, že číslo 43161 těžko někdo identifikuje jako datum. To se musí poznat ze záhlaví (popisu). Ve formě ISO je datum celkem dobře čitelené i bez separátorů a asi každého napadne že by mohlo jít o datum.
ISO formát má ještě výhodu v tom, že je to jednoznačné. Klasické číslo může začínat ve 3 různých datumech a když se nastaví špatné datum startu tak se lidé diví. Takže oba systémy mají svá pro a proti, ale ISO vychází ze známých nedostatků klasického zadání.
Čas bývá používán spolu s datumem jen zřídka a když už tak většinou jako časové razítko Datum + čas až na vteřiny, ale někdy jsou požadovány jen hodiny, nebo až minuty.
Zase v CSV se můžeme také setkat s datumem dd/mm/rrrr. To je právě kvůli přenositelnosti. Je to správně i když ne vždy je takto datum vyjádřeno.
Přiznám se k tomu, že když toto převádím, (je nutné očistit znaky od mezer a někdy také od jednoduché či a dvojitých uvozovek) tak při tom provedu náhradu ":" za "/". Je to zvyk ale použít ISO by značně proces zjednodušilo. Musím se také poučit :-)
Díky
lp.
Odpovědět Programovanie makier v LibreOffice: Bližší pohľad na dátum a čas – funkcie CDateToISO a CDateFromISO 3. 03. 2018, 23:15:04
Zkusil jsem zadat několik datumů podle iso 8601:
20101012 -> 12.10.2010 (ok)
2016-02-28 -> 28.02.2016 (ok)
2018063 -> (4.2.2018)
2018W033 -> (17.1.2018)
2018W033T110845 -> (17.1.2018 11:08:45)
--0301 -> 01.03.1900 (1.3.2018 -- = akt rok)
1001 -> 01.10.1900 (nejednoznačné, např. rok 1001 nebo čas 10:01:00)
Funkce CDateFromISO toho moc neumí. Občas vrací chybný výsledek.
Její použití bych moc nedoporučil. Lépe je napsat si vlastní funkce.