Programovanie makier v LibreOffice: Bližší pohľad na dátum a čas – funkcie WeekDay, WeekDayName a MonthName

LO.png Naučte sa zisťovať z dátumu deň v týždní a efektívnejšie zobrazovať konkrétny mesiac v roku. Reč bude o funkciách WeekDay, WeekDayName a MonthName.  

Je dnes utorok alebo streda?

Vášou úlohou je na základe dátumu zistiť deň v týždní a následne vypísať, či je pondelok, utorok alebo iný deň. Na zistenie dňa v týždní použijeme funkciu WeekDay. Ako dátum použijeme funkciu Now.

Sub denVTyzdni 
Dim retazec As string 
Dim den As Integer

den = WeekDay(Now)

If den = 1 Then 
    retazec = "nedela"
    
ElseIf den = 2 Then
    retazec = "pondelok"
    
ElseIf den = 3 Then
    retazec = "utorok"
    
ElseIf den = 4 Then
    retazec = "streda"
    
ElseIf den = 5 Then
    retazec = "stvrtok"
    
ElseIf den = 6 Then
    retazec = "piatok"
    
ElseIf den = 7 Then
    retazec = "sobota"

Else retazec = "chyba"
End If

MsgBox "Aktualne je " & retazec 
End Sub

Zisťujeme aktuálny deň v týždní Zisťujeme aktuálny deň v týždní

Návratová hodnota funkcie WeekDay je celé číslo v intervale od 1 do 7 predstavujúc konkrétny deň v týždní. Všimnite si, že číslo 1 nepredstavuje pondelok podľa našej každodennej skúseností, ale nedeľu!

Aby sme otestovali využitie funkcie WeekDay pri dvoch rôznych formátov, tak ju zakomponujeme do vlastnej funkcie.

Sub denVTyzdni REM 

Dim retazec As String
Dim den As Integer
On Error Resume Next
den = WeekDay(43026) 
retazec = retazec & "Den v tyzdni datumu " & CDate(43026) & " je " & testDnaVTyzdni(den) & Chr(10)
den = WeekDay("03.05.2018")
retazec = retazec & "Den v tyzdni datumu " & CDate("03.05.2018") & " je " & testDnaVTyzdni(den) & Chr(10)
MsgBox retazec
End Sub

Function testDnaVTyzdni(den) As String
If den = 1 Then 
    testDnaVTyzdni = "nedela"
    
ElseIf den = 2 Then
    testDnaVTyzdni = "pondelok"
    
ElseIf den = 3 Then
    testDnaVTyzdni = "utorok"
    
ElseIf den = 4 Then
    testDnaVTyzdni = "streda"
    
ElseIf den = 5 Then
    testDnaVTyzdni = "stvrtok"
    
ElseIf den = 6 Then
    testDnaVTyzdni = "piatok"
    
ElseIf den = 7 Then
    testDnaVTyzdni = "sobota"

Else testDnaVTyzdni = "chyba"
End If
End Function

Zisťujeme deň v týždní v dvoch formátov dátumu Zisťujeme deň v týždní v dvoch formátov dátumu

Zadali sme čas v dvoch tvaroch. Prvý tvár den = WeekDay(43026) známy pri funkcii CDate a druhý tvár vo formáte lokálneho nastavenia dátumu: den = WeekDay("03.05.2018")

Daj mi číslo a ja ti poviem, kto si!

Ak chceme zistiť z dátumu deň v týždní a vhodne ho napr. pre používateľa aplikácie ukázať, tak miesto čísla zobrazíme napr. pondelok, utorok a pod... Zatiaľ sme to robili pracne v našej definovanej funkcii.

Function testDnaVTyzdni(den) As String
If den = 1 Then 
    testDnaVTyzdni = "nedela"
    
ElseIf den = 2 Then
    testDnaVTyzdni = "pondelok"
    
ElseIf den = 3 Then
    testDnaVTyzdni = "utorok"
    
ElseIf den = 4 Then
    testDnaVTyzdni = "streda"
    
ElseIf den = 5 Then
    testDnaVTyzdni = "stvrtok"
    
ElseIf den = 6 Then
    testDnaVTyzdni = "piatok"
    
ElseIf den = 7 Then
    testDnaVTyzdni = "sobota"

Else testDnaVTyzdni = "chyba"
End If
End Function

Avšak existuje funkcia WeekDayName, ktorá nám miesto písania toľkého kódu vráti deň v týždni v lokálnom jazyku. Takže žiadneho Saturday sa nemusíte obávať.

Sub denVTyzdni
Dim retazec As String
Dim den As Integer
retazec = retazec & "Den v tyzdni datumu " & CDate(42278) & " je " & WeekDayName(WeekDay(42278)) & " a v skratenej volbe: " & WeekDayName(WeekDay(42278),True) 
MsgBox retazec
End Sub

Zobrazujeme deň v týždní Zobrazujeme deň v týždní

Argumentom funkcie WeekDayName je číslo, ktoré predstavuje konkrétny deň v týždní. To číslo získame funkciou WeekDay. Ak chceme len skratku dňa, tak využijeme druhý argument a nastavíme ho na True.

Rovnako ako v pri získavaní dňa v týždni postupujeme pri zisťovaní mesiaca v roku.

Sub mesiacVRoku 
Dim retazec As String
Dim den As Integer
retazec = retazec & "Mesiac v roku pre datum " & CDate(43098.25) & " je " & MonthName(Month(43098.25)) & " a v skratenej volbe: " & MonthName(Month(43098.25),True) 
MsgBox retazec
End Sub

Zobrazujeme mesiac v roku Zobrazujeme mesiac v roku

V skrátenej verzii je mesiac vyjadrený ako rímska číslica.

(Jako ve škole) Průměr: 1.67 | Hodnotilo: 3
 

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