Začínáme s ASP 11. Zpracování data a času

Jestliže byl předchozí článek věnován teorii, bude dnešní lekce zaměřena ryze prakticky. Budeme se zabývat funkcemi, které zpracovávají datum a čas.
Snad nejdůležitější je funkce na zjištění aktuálního času a datumu.

Now – aktuální čas a datum

Now ()
Funkce vrátí aktuální datum a čas v jedné proměnné. Pokud jinak neurčíme formát, výsledkem funkce je řetězec dd.mm.yyyy hh:mm:ss. Pokud však budeme chtít s těmito údaji dále pracovat, měli bychom si z tohoto řetězce extrahovat. Můžeme použít již nám známé funkce pro práci s řetězci (např. Mid), ale VBS nabízí mnohem elegantnější řešení.

Day    (datum)
Month  (
datum)
Year  (
datum)
Hour  (
datum)
Minute (
datum)
Second (
datum)
Uvedené funkce vrací jednotlivé časové, resp. datumové jednotky (den, měsíc, rok, hodina, minuta, sekunda). K těmto šesti funkcím můžeme přiřadit také sedmou na zjištění dne v týdnu - WeekDay

WeekDay – den v týdnu

WeekDay (datum, [prvni_den_v_tydnu])
Funkce vrací číslo od 1 do 7, přičemž 1 reprezentuje neděli, 2 podělí a 7 sobotu. Vychází to amerického systému, kdy se za začátek týdne považuje neděle. Pro tuto odlišnost nabízí VBS pro mezinárodní použití druhý parametr, který určuje první den v týdnu. Pokud jej neuvedeme nebo uvedeme 0, použije se výchozí nastavení systému – NLS (National Language Support). Při použití druhého parametru jako 1 nadefinujeme jako první den týdnu neděli, 2 pondělí – tedy analogie prvního parametru.

Pozn: Namísto čísel 1..7 můžeme použít také konstanty tedy vbSunday, vbMonday, vbTuesday, vbWednesday, vbThursday, vbFriday, vbSaturday . Uvedené funkce bychom si tedy mohli názorně předvést na malém příkladě:

<%
Function GetDay(d)
Select Case WeekDay(d)
          Case 1  GetDay = "nedìle"
          Case 2  GetDay = "pondìlí"
          Case 3  GetDay = "úterý"
          Case 4  GetDay = "støeda"
          Case 5  GetDay = "ètvrtek"
          Case 6  GetDay = "pátek"
          Case 7  GetDay = "sobota"
      End Select
End function


Dim Actual
Actual = Now
response.write("<table>")
response.write("<tr><td><b>Dnešní datum:</b></td><td> " & Day(Actual) & "." & Month(Actual) & "." & Year(Actual) & "</td></tr>")
response.write("<tr><td><b>Aktuální èas:</b></td><td> " & Hour(Actual) & ":" & Minute(Actual) & ":" & Second(Actual) & "</td></tr>")
response.write("<tr><td><b>Den:</b></td><td> " & GetDay(Actual) & "</td></tr>")
response.write("</table>")
%>

DateSerial a TimeSerial – sestavení formátu Date/Time

DateSerial (rok, měsíc, den)
TimeSerial (
hodina, minuta, sekunda)
Funkce vrátí typ Variant podtypu Date, resp. Time. Přeloženo do normálního jazyka, sestaví datum do formátu, s kterým můžeme dále pracovat jako datum/čas. Pozorný čtenář se jistě zamyslí, proč nesestavíme datum pouhým sloučením, např. den & "." & měsic & "." & rok . Toto řešení nám však neohlídá problémy s platností data, zatímco DateSerial před sestavením vždy provede kontrolu a případně datum upraví. Pokud tedy zavoláme funkci


DateSerial (2001, 2, 30) ‘ nevrátí nám 30.2.2001, nýbrž 2.3.2001

Navíc nám tato funkce dovoluje řešit pohyby po kalendáři (dnes si uvedeme ještě jednu funkci, která je určena právě pro toto použití). Pokud chceme vrátit datum, kolikátého bude za 100 dní, můžeme použít: DateSerial( Year(Now), Month(Now), Day(Now)+100 )

DateValue – převod do formátu Date/Time

DateValue (datum)
TimeValue (
čas)
Funkce převádí datum do formátu Date, resp. čas do formátu Time. Důležité je však říci, z jakého formátu se převod převádí:

DateValue("11. Leden 1999") DateValue("11.leden 1999") DateValue("11 leden 1999") DateValue("11-leden-1999") DateValue("11-led-1999") DateValue("11.1.1999") DateValue("11 1 1999") DateValue("11/1/1999") Všechny uvedené příklady vrátí datum 11.1.1999, neboli #1/11/1999#. Pozor však nezaměňujme tento zápis s posledním z příkladů. Z třetího dílu víme, že se datum uvozuje do maltézských křížů. Musím však dát pozor na správný US formát, tedy #mm/dd/yyyy#. Podobně je tomu u funkce TimeValue: TimeValue("3:28:15 PM")
TimeValue("3:28:15 pm")
TimeValue("15:28:15")
Tyto funkce vrátí 15:28:15. Analogicky můžeme použít také AM.

Ostatní funkce pro práci s datumem a časem

DateAdd (jednotka, počet_jednotek, výchozí_datum)
Funkce DateAdd provádí časový posun o danou jednotku, na rozdíl od DateSerial, může provádět posun i o hodiny, minuty, sekundy, kvartály, týdny, čísla dnů a týdnů. Časovou jednotku definujeme prvním parametrem a může nabývat:

Jednotka Popis
yyyy Rok
q čtvrtletí
m Měsíc
y den v roce
d den
w pracovní den
ww pracovní týden
h hodina
n minuta
s Sekunda
Malý příklad:

DateAdd("m", 1, "31.leden 2001")      ‘ funkce vrátí 28.2.2001

DateDiff (jednotka, datum1, datum2)
Funkce DateDiff porovnává dvě data na úrovni definované jednotky. Funkce má složitější deklaraci, ale podrobnější syntaxe přesahuje rámec tohoto seriálu. Uvedeme si snad, že se jedná o analogii posledního parametru ve funkci WeekDay. Jednotky již známe z funkce DateAdd. Funkce vrací samozřejmě také záporné hodnoty, pokud je datum1 větší než datum2. Příklad na tuto funkci si uvedeme v příští lekci.

Diskuze (1) Další článek: Intel právě představil Itanium

Témata článku: , , , , , , , , , , ,