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

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.








