Programovanie makier v LibreOffice: Bližší pohľad na dátum a čas – funkcie Year, Month a Day

LO.png Potrebujete z aktuálneho dátumu extrahovať rok, mesiac prípadne deň v mesiaci? Dosiahnete to s pomocou funkcii Year , Month a Day .  

Funkcie Year, Month a Day

Ako už z prekladu z angličtiny do slovenčiny vyplýva, pôjde o funkcie, ktoré vracajú rok, mesiac alebo deň. Ukážeme si príklad pre každú jednotlivú funkciu, aby sme videli ich správanie. No skôr než dôjdeme k príkladom, ukážme si syntax k dotyčným funkciám.

Year(číslo alebo podporovaný formát dátumu)
Month(číslo alebo podporovaný formát dátumu)

Day(číslo alebo podporovaný formát dátumu)

1. príklad: Testujeme správanie funkcie Year

Sub functionYear 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 Year
 For i = LBound(pole()) To UBound(pole())
 retazec = retazec & CStr(i+1) & ". " & pole(i) & " -> "
 retazec = retazec & Year(pole(i))
 retazec = retazec & Chr(10)
 Next
 REM výpis na obrazovku
 MsgBox retazec
 End Sub REM koniec procedúry

Test funkcie Year Test funkcie Year

Rozbor makra:

Musíte si uvedomiť, že funkcia Year je zavisla na premennej Date, preto je možné vyťažiť rok jak z možností numerického zápisu, tak z podporovaného lokálneho formátu dátumu resp. času. Napríklad, ak zadáme aktuálny dátum a čas, tak vytiahneme rok 2018 viď. 1. 19.03.2018 01:07:49 ->  2018
Z numerického zápisu vytiahneme takto: 3. -1000 ->  1897

Poďme teraz k funkcii Month. Táto funkcia vracia číslo od 1 do 12, predstavujúce konkrétny kalendárny mesiac.

2. príklad: Testujeme správanie funkcie Month

Sub functionMonth 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 Month
 For i = LBound(pole()) To UBound(pole())
 retazec = retazec & CStr(i+1) & ". " & pole(i) & " -> "
 retazec = retazec & Month(pole(i))
 retazec = retazec & Chr(10)
 Next
 REM výpis na obrazovku
 MsgBox retazec
 End Sub REM koniec procedúry

Test funkcie Month Test funkcie Month

Rozbor makra:

Keďže aktuálne máme marec tak pri aktuálnom výpise dátumu vráti funkcia Month číslo 3 viď. 1. 19.03.2018 12:56:07 ->  3. A čo numerický zápis? Aj odtiaľ vie funkcia Month vytiahnuť mesiac, napr.  6. 458 ->  4.

A čo vracia funkcia Day? Interval číselných hodnôt od 1 do 31. Všetko zavisí od dňa v mesiaci. Ako viete, niektoré kalendárne mesiace majú 31 dní, iné 30 dní a február má mimo priestupného roku 28 dní (v priestupnom  29 dní). Tieto fakty by mali byť každému jasne, tak poďme túto funkciu zaťažiť našimi testami argumentov.

3. príklad: Testujeme funkciu Day

Sub functionDay 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,"29.02.2016","30.02.2016",-1000,"1000","-1000",458,"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 Day
For i = LBound(pole()) To UBound(pole())
 retazec = retazec & CStr(i+1) & ". " & pole(i) & " -> "
 retazec = retazec & Day(pole(i))
 retazec = retazec & Chr(10)
Next
REM výpis na obrazovku
MsgBox retazec
End Sub REM koniec procedúry

Test funkcie Day Test funkcie Day

Rozbor makra:
Aký je dnes deň? 19! Aj funkcia nám to bezchybne oznámi: 1. 19.03.2018 02:16:32 ->  19.
Rozlíšenie priestupného roka? Ani to nie je problém pre funkciu Day viď. 3. 29.02.2016 ->  29. Samozrejme 30. február neexistuje, čiže výstup je nasledovný: 4. 30.02.2016 ->  .

(Jako ve škole) Průměr: 1.00 | Hodnotilo: 1
 

Přidat názor

 

Nejsou podporovány žádné značky, komentáře jsou jen čistě textové. Více o diskuzích najdete v nápovědě. Diskuzi můžete sledovat pomocí RSS kanálu.

 
Eduard Boldižár

Eduard Boldižár

Som redaktorom stránky astrotech.cz. Mám 24 rokov. Čas trávim v IT škole. Medzi moje záľuby patrí astronómia, sci-fi literatúra a programovanie.

 
 
 
woo jaw demo hz