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.

 
EDU Trainings
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.

 

Public Relations

IPv4 zastarává, i tak si však zaslouží kvalitní zabezpečení

Znáte souvislost mezi doménami a typickými IP adresami? Není od věci si uvědomit, že zatímco domény jsou určeny pro zjednodušení hledání webové stránky na internetu, IP adresy slouží primárně pro výpočetní techniku, konkrétně pro přesné vyhledání konkrétního serveru nebo počítače.

Pokračování ...


LinuxEXPRES (news 300px)
SAM v kostce 2019
 
 
woo jaw demo hz