Programovanie makier v LibreOffice: Rýchla manipulácia časovej informácie

LO.png Potrebujete rýchlo zmeniť len minúty miesto toho, aby ste odznova tvorili celý čas napr. s funkciou TimeSerial()? Využite funkciu DateAdd(), ktorá vám umožní manipulovať s jednotlivými časťami časovej resp. dátumovej informácie. Okrem toho sa dozviete, ako zistiť interval napr. v mesiacoch medzi dvoma odlišnými dátumami.  

Priama manipulácia s dátumom a časom

Doteraz, ak sme chceli čas resp. dátum, tak sme vytvorili nový napr. s pomocou funkcie TimeSerial() alebo DateSerial(). Existuje však spôsob, ktorý vám umožní zmeniť len časť času a dátumu bez toho, aby ste museli vytvárať celý dátum resp. čas. Tento spôsob vám ušetrí čas pri zápise a rovnako sa už nemusíte veľmi starať, čo všetko ste zmenili v dátumovej či časovej informácii. Funkcia DateAdd() dokáže na základe zvoleného intervalu pridať alebo odobrať hodnotu zvoleného identifikátora času alebo dátumu. Identifikátorom času resp. dátumu rozumieme napr. minúty, hodiny či dni v týždní. Návratová hodnota funkcie DateAdd() je premenná typu Variant, ktorá predstavuje zmenený dátum resp. čas.

Nasleduje ukážka programu, kde budeme pridávať časový interval.

Sub zmenaCasu
Dim cas As Variant
Dim novy_cas1 As Variant
Dim novy_cas2 As Variant
Dim novy_cas3 As Variant
cas = "10:11:57"
novy_cas1 = DateAdd("h", 5, cas)
novy_cas2 = DateAdd("n",4,cas)
novy_cas3 = DateAdd("s",3,novy_cas2)
MsgBox "Prvý čas: " & novy_cas1 & Chr(10) & "Druhý čas: " & novy_cas2 & Chr(10) & "Tretí čas: " & novy_cas3
End Sub

01pics.png

Ak vieme pridať interval do nejakej častí času, vieme ho i odobrať. Neveríte? Presvedčme sa!

Sub zmenaCasu
Dim cas As Variant
Dim novy_cas1 As Variant
Dim novy_cas2 As Variant
Dim novy_cas3 As Variant
cas = "10:11:57"
novy_cas1 = DateAdd("h", -3, cas)
novy_cas2 = DateAdd("n",-11,cas)
novy_cas3 = DateAdd("s",-8,novy_cas2)
MsgBox "Prvý čas: " & novy_cas1 & Chr(10) & "Druhý čas: " & novy_cas2 & Chr(10) & "Tretí čas: " & novy_cas3
End Sub

02pics.png

Funkcia DateAdd() je tvorená troma argumentmi. Prvým argumentom povieme, ktorú časť časovej informácie chceme zmeniť, druhý argument reprezentuje interval, o koľko zmeníme časový údaj a tretím argumentom nie je nič iné, než samotný čas, ktorý chceme zmeniť.

V prvom argumente máme pri čase možnosť zmeniť hodiny cez reťazec "h", minúty ako "n" a sekundy "s".

Podobne budeme postupovať aj pri dátume.

Sub zmenaDatumu
Dim datum As Variant
Dim novy_cas1,novy_cas2,novy_cas3,novy_cas4,novy_cas5,novy_cas6,novy_cas7 As Variant
datum = "26.02.2007"
novy_datum1 = DateAdd("d", 2, datum)
novy_datum2 = DateAdd("yyyy",-3,novy_datum1)
novy_datum3 = DateAdd("m",-5,novy_datum2)
novy_datum4 = DateAdd("q",2,novy_datum3)
novy_datum5 = DateAdd("w",5,novy_datum4)
novy_datum6 = DateAdd("ww",2,novy_datum5)
novy_datum7 = DateAdd("y",-3,novy_datum6)
MsgBox "Prvý datum: " & novy_datum1 & Chr(10) & "Druhy datum: " & novy_datum2 & Chr(10) & "Treti datum: " & novy_datum3 & Chr(10) & "Stvrty datum: " & novy_datum4 & Chr(10) & "Piaty datum: " & novy_datum5 & Chr(10) & "Siesty datum: " & novy_datum6 & Chr(10) & "Siedmy datum: " & novy_datum7
End Sub

03pics.png

Poďme si rozobrať hlavne prvý argument, ktorým definujeme, čo chceme zmeniť v dátumovej informácii. Takže "d" definujeme deň, "m" mesiac, "yyyy" rok, "q" štvrťrok, "w" deň v týždní, "ww" týždeň v roku a "y" predstavuje deň v roku, ale funguje ako argument v tvare "d". Dávajte si pozor na rozdiel medzi "w" a "ww", pri prvom je interval 1-7 a druhý má interval 1-52 resp. 1-53! Nemal by ale byť problém prekročiť hodnoty intervalu, napr. ak dáte hodnotu 8 pri "w", tak sa to berie ako 7+1. Malo by byť jasné, z akého dôvodu. Ak by nebolo niečo jasné, vždy je možnosť sa spýtať pod článkom v komentári.

Ako zistiť časový rozdiel medzi dvoma odlišnými časmi?

Na zistenie časového intervalu medzi dvoma časmi použijeme funkciu DateDiff(). Funkcia vracia celé číslo.

Sub zistenieIntervaluCasu
Dim datum1 As Variant
Dim datum2 As Variant
Dim datum3 As Variant
Dim datum4 As Variant
Dim vysledok1 As Integer
Dim vysledok2 As Integer

datum1 = "15.06.2015"
datum2 = "19.02.2017"
datum3 = "28.11.2014"
datum4 = "11.11.2011"

vysledok1 = DateDiff("d",datum1,datum2)
vysledok2 = DateDiff("m",datum3,datum4)
MsgBox "Prvy rozdiel: " & vysledok1 & Chr(10) & "Druhy rozdiel: " & vysledok2
End Sub

04pics.png

Všimnite si, že môžeme dostať kladné i záporne číslo podľa toho, ako dátumy dáme do argumentov.

(Jako ve škole) Průměr: 1.80 | Hodnotilo: 5
 

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