ISO 8601
ISO 8601 je medzinárodný štandard, ktorý predpisuje formát dátumu a času. Tento predpis bol vydaný Medzinárodnou organizáciou pre normalizáciu. Odtiaľ aj skratka ISO.
Prečo práve spomíname túto normu? Pretože uľahčuje prechod medzi viacerými jazykovými a lokálnymi nastaveniami dátumu a času. Tento štandard zvyšuje prenositeľnosť medzi rôznymi konfiguráciami počítačov a to je už niečo, čo sa vám môže zísť.
Hlavná pointa je, že dátum začína od významnejších čísel po tie menej významné. Takže miesto 01.02.2016 je prevod do
ISO 8601 normy nasledovný: 20160201. Čiže platný formát je YYYYMMDD, kde Y je
year, M moon a D day. Existujú k zápisu oddeľovače napr. YYYY-MM-DD, ale je na
vás, či ich využijete, pretože sú dobrovoľné.
Funkcia CDateToISO
Chcete pohodlne previesť dátum na formu ISO 8601? Nie je žiadny problém, pri programovaní makier v LibreOffice vieme
využiť funkciu CDateToISO.
Funkcia CDateToISO má nasledovnú syntax:
CDateToISO( číslo )
Program, ktorý si ukážeme, už dôverne poznáte z minulých dielov, ale je perfektný na ukazovanie fungovania niektorých funkcii.
01. príklad: Bližší pohľad na funkciu CDateToISO
Sub functionIsDateToISO REM začiatok makra
On Error Resume Next REM ak nastane chyba, nech makro beží ďalej
Dim i As Integer REM deklarácie premenných
Dim retazec As String
Dim pole()
REM naplňujeme naše pole
pole() = Array(Now,10.5,-1000,"1000","-1000","10.12.1989","10:21","11/12","10:20:55","11/5/1000","21/11/1987","11\11\1111","5 November, 1983 11:12:24","1983.12.12","12.12.1922 15:10:22","15:10:22 12.12.1922")
REM v cykle experimentujeme s funkciou IsDate
For i = LBound(pole()) To UBound(pole())
retazec = retazec & CStr(i+1) & ". " & pole(i) & " -> "
retazec = retazec & CDateToISO(pole(i))
retazec = retazec & Chr(10)
Next
REM výpis na obrazovku
MsgBox retazec
End Sub REM koniec procedúry
Testujeme funkciu CDateToISO
Rozbor makra:
Pozrieme sa na jednotlivé prípady funkčností danej funkcie.
1. 28.02.2018 22:10:23 -> 20180228 – vidíte ako súčasný dátum zmeníte na ISO 8601 formu.
2. 10,5 -> 19000109 – rozpamätajte sa, ako zadávame číslo ako dátum a čas vo funkcii
CDate
3. -1000 -> 18970404 – záporne číslo? Žiadny problém s konverziou na ISO 8601
9. 10:20:55 -> 18991230 – ak nenapíšeme dátum, len čas, tak nám to vypľuje dátum, ako keby sme
funkcii CDate napísali hodnotu 0.
11. 21/11/1987 -> – nevyhovujúci formát dátumu, zavisí to od lokálneho nastavenia
16. 15:10:22 12.12.1922 -> nevyhovuje formátu času a dátumu, najprv ide dátum a až tak čas
Funkcia CDateFromISO
Ak sme raz previedli dátum do ISO 8601 podoby, môžeme i späť? Áno môžeme a funkcia, ktorá sa presne o to stará sa
nazýva CDateFromISO. Fungovanie tejto funkcie si samozrejme ukážeme v druhom príklade, ale najprv si
predstavme jednoduchú základnú syntax funkcie.
CDateFromISO( reťazec )
Argumentom funkcie CDateFromISO je dátum vo formáte ISO 8601 napísaný ako reťazec.
2. príklad: Ukážka funkcie CDateFromISO
Sub functionIsDateFromISO REM začiatok makra
On Error Resume Next REM ak nastane chyba, nech makro beží ďalej
Dim i As Integer REM deklarácie premenných
Dim retazec As String
Dim pole()
REM naplňujeme naše pole
pole() = Array(20101012,20160228,20160230,Now,10.5,-1000,"1000","-1000","10.12.1989","10:21","11/12","10:20:55","11/5/1000","21/11/1987","11\11\1111","5 November, 1983 11:12:24","1983.12.12","12.12.1922 15:10:22","15:10:22 12.12.1922")
REM v cykle experimentujeme s funkciou IsDate
For i = LBound(pole()) To UBound(pole())
retazec = retazec & CStr(i+1) & ". " & pole(i) & " -> "
retazec = retazec & CDateFromISO(pole(i))
retazec = retazec & Chr(10)
Next
REM výpis na obrazovku
MsgBox retazec
End Sub REM koniec procedúry
Testovanie funkcie CDateFromISO
Rozbor makra:
2. 20160228 -> 28.02.2016 – úspešný prevod
3. 20160230 -> – 30. február vážne neexistuje
4. 01.03.2018 00:30:54 -> – tento prípad a všetky nasledujúce nepredstavujú zápis dátumu v ISO 8601
forme
V tomto dielu nášho seriálu o programovaní makier v LibreOffice pokračujeme v popisu funkcií pre prácu s dátumom a
časom. Dnes sa pozrieme na normu ISO 8601 a predstavíme si dve funkcie, ktoré pracujú s týmto medzinárodne uznávaným
štandardom.








