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: Software, Programování, Čas, Zpracování, Case, Second, Code, Zpracování dat, Funkce, První minuta, ASP


Určitě si přečtěte

Šmírování kamerami Googlu: Koukněte, co šíleného se objevilo na Street View

Šmírování kamerami Googlu: Koukněte, co šíleného se objevilo na Street View

Google stále fotí celý svět do své služby Street View. A novodobou zábavou je hledat v mapách Googlu vtipné záběry. Podívejte se na výběr nejlepších!

redakce | 8

ReactOS: Zapomenuté a open-source Windows, které nevyrobil Microsoft

ReactOS: Zapomenuté a open-source Windows, které nevyrobil Microsoft

** Představte si svobodné Windows. Bláznivá vize? ** Vývojáři je přitom začali psát už před více než dvaceti lety ** Jmenují se ReactOS a spustíte na nich i Total Commander

Jakub Čížek | 52

37 nejstrašnějších počítačů, které jste kdy viděli

37 nejstrašnějších počítačů, které jste kdy viděli

** Přehled nejhorších počítačů na světě ** Šílené konstrukce a materiály ** Jak to dopadne, když se o počítač nestaráte

Karel Javůrek | 24

Výkon herního počítače za 139 Kč nebo i úplně zadarmo. Geforce Now startuje!

Výkon herního počítače za 139 Kč nebo i úplně zadarmo. Geforce Now startuje!

** Dlouhý betatest končí a nyní všichni mohou hrát přes internet ** Nemusíte žádné hry kupovat znovu. Jede to, co už máte v knihovnách na Steamu, Uplay, Battle.net a jinde ** Roční náklady odpovídají ceně jedné běžné hry

Tomáš Holčík | 53

Koupili jsme nejlevnější dron s kamerou. Stál nás 300 Kč a má rozměry kreditky

Koupili jsme nejlevnější dron s kamerou. Stál nás 300 Kč a má rozměry kreditky

** Kvalitní drony začínají na 10 000 Kč ** Šli jsme na to jinak a koupili ten nejlevnější s kamerou ** I když je to čínský šmejd, je s ním zábava

Jakub Čížek | 35

Dnes nastal konec Windows 7. Ale nepropadejte panice, počítač vám nastartuje i zítra

Dnes nastal konec Windows 7. Ale nepropadejte panice, počítač vám nastartuje i zítra

** Dnes končí podpora Windows 7 a systém formálně umírá ** Co to ale znamená v praxi a bude mi PC fungovat i zítra? ** A mohu i v lednu 2020 zdarma přejít na Windows 10?

Jakub Čížek | 121



Aktuální číslo časopisu Computer

Velký test autokamer

Test ATX skříní

Jak surfovat pohodlně

Sportovní aplikace

Jak funguje procesor