Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!
Zadejte Vaši e-mailovou adresu:
Kamarád fotí rád?
Přihlas ho k odběru fotomagazínu!
Zadejte e-mailovou adresu kamaráda:
Software
AppleScript - práce s daty
27. července 2006, 00.00 | Dnes se podíváme do kalendáře a ukážeme si jak pracovat s daty. Ukážeme si co všechno s nimi AppleScript umí, jak je můžeme sčítat, odčítat, nebo rozebrat na jednotlivé elementy a jak toho můžeme využít. Nejprve si ale ještě řekneme něco o porovnávání, které se nám bude hodit při vytváření podmínek při rozhodování.
Při porovnávání můžeme použít matematická znaménka jako "je větší" nebo "je menší", každé má ale své slovní ekvivalenty, které se dají použít v nejrůznějších případech, pojďme si je tedy všechny představit. Začněme pěkně popořadě od znaménka je menší (<), jeho slovní ekvivalenty jsou: is less than, is not greater than or equal to a comes before. Je menší nebo rovno (≤): is less than or equal to, is not greater than, does not come after. Rovná se (=): is equal to nebo jen is. Není rovno (≠): is not equal to nebo is not. Je větší (>): is greater than, is not less than or equal a comes after. Je větší nebo rovno (≥): is greater than or equal to, is not less than a does not come before. Použijeme-li tedy pouze znaménka, nebo některé z popsaných ekvivalentů, je v zásadě jedno. Některé se hodí spíše k porovnávání textu, některé na čísla, ale záleží spíše na každém z vás co mu bude vyhovovat. Každopádně je dobré znát všechny možnosti, pro případ že otevřete cizí program, jehož autor si oblíbil jiný způsob než vy.
Tak a teď už se podíváme na data. AppleScript má pro data samostatnou třídu, proto je práce s daty velmi snadná a máme mnoho možností jak s nimi pracovat. Základní formát data je:
denvtydnu, měsíc den, rok hh:mm:ss ampmTen můžeme ještě rozložit na jednotlivé části, které jsou vlastně něco jako podtřída třídy date. Jsou to weekday obsahující název jednoho dne v týdnu, month obsahující jeden z názvů měsíců. Day je číslo od jedné do 31 a year čtyřmístné číslo obsahující rok. Zbývá ještě time, k jehož formátu se dostaneme za chvíli, a vše končí am nebo pm. Ty jsou v případě použití 24hodinového času vypuštěny. Nepotřebujeme-li s datem dále pracovat jako se samostatnou třídou, ale postačí nám jeho textový tvar, můžeme použít date string ("Thursday, May 4, 2006"), time string ("22:06:25") nebo short date string ("4/5/06"), ty na rozdíl od weekday a month nejsou samostatnou třídou ale výsledek je pouze string.
Tak a jak se v AppleScriptu zeptat na datum? Příkazem
current dateTen zjistí od systému přesné datum a vrátí ho jako svůj výsledek. Zkuste si do nového okna napsat:
set datum to current datea program spusťte. V poli result se vám objeví přesné datum se slovem date na začátku, oznamujícím nám jeho třídu. Můžeme se zeptat i na jeho jednotlivé části. Napište na další řádek:
set den to weekday of datumTakto se můžeme zeptat na všechny výše popsané třídy i jednotlivé stringy. V případě, že potřebujeme vědět pouze jednu složku data, můžeme se na ni zeptat přímo, a to takto:
set den to weekday of (current date)Napíšeme-li toto místo předchozích dvou řádek, dostaneme stejný výsledek pouze v jedné. Všimněte si závorek kolem příkazu current date, ty jsou v tomto případě nutné, my se totiž ptáme na weekday z výsledku operace current date a ne pouze slova current, o což by se AppleScript pokusil nebýt závorek. Ještě si řekněme, že když si bereme pouze jednotlivé části data, výsledek bude vždy anglický název bez ohledu na formát i jazyk data nastavený v preferencích. Ten se projeví pouze v celém datu nebo u stringů. Takto například vypadá celé datum ve francouzském formátu: date "jeudi 4 mai 2006 22:52:24".
Vraťme se ale k času. Necháme-li si zobrazit pouze čas, nedostaneme ho ve formátu jak ho vidíme v celém datu, ale jen jako počet sekund uplynulých od půlnoci. Opravte slovo weekday za slovo time a spusťte. Výsledek je integer. Napište na další řádku:
set hodiny to den div 3600to nám prozradí počet hodin uplynulých od půlnoci. Pro snazší práci s daty máme v AppleScriptu konstanty, které jsou slovními ekvivalenty počtu sekund v určitém časovém období. Jsou to minutes (60), hours (3600), days (86400) a weeks (604800). Napíšeme-li tedy místo číslice 3600 slovo hours, výsledek bude naprosto stejný.
Toho nejlépe využijete v případě, že chcete nějaké datum nastavit. To uděláme naším starým známým příkazem set, a to ve formátu:
set month of datum to měsícTakto můžeme nastavit všechny údaje kromě weekday, který se nastaví sám podle data a dnu, který mu náleží. Můžeme také nadefinovat celé datum pomocí date stringu, způsob, jak to udělat, uvidíte v následujících ukázkách. V první je vidět, jak můžeme data zadat a v druhé jak vypadají po zkompilování. Výsledek je v poznámce za každým řádkem.
Teď už umíme data zadat, ale můžeme s nimi pracovat i dále. Jak například zjistíme časový rozdíl mezi dvěma daty, jednoduše je od sebe odečteme. Napište do nového okna:
set datum1 to date "7/7/2006" set datum2 to date "17/3/2006" set rozdil to datum1 - datum2 -- rozdíl v sekundách set rozdilHODINY to rozdil div hours -- rozdíl v hodinach set rozdilTYDNY to rozdil div weeks -- rozdíl v tydnechMůžeme je samozřejmě i přičítat, stejně jako můžeme přičítat a odečítat jiné časové úseky. Naspecifikujeme si tak datum, nebo časový úsek jaký potřebujeme. Pokračujte ve skriptu takto:
set zaDLOUHO to datum1 + 1 * hours + 30 * minutes -- za hodinu a pul set predevcirem to datum1 - 2 * days -- prede dvema dnyVýsledek je zase vidět v poznámce. Práce s daty je tedy velice snadná, a dává nám poměrně volnou ruku při jejich používání a zpracování. Na nás už je potom způsob a účel pro který toho využijeme. A to je pro dnešek všechno, příště se podíváme do slovníku a naučíme se získat od uživatele nějaká data.
Obsah seriálu (více o seriálu):
- AppleScript - úvod
- AppleScript - Script Editor
- AppleScript - Proměné
- AppleScript - Třídy
- AppleScript - matematika a počítání
- AppleScript - rozhodování
- AppleScript - práce s daty
- AppleScript - slovníky
- Apple Script - rozhodování
- Apple Script - opakování akcí
- Apple Script - opakování akcí (pokračování)
- Apple Script - Text
- Apple Script - elementy Stringu
- Apple Script - elementy Stringu II.
- AppleScript - seznamy
- AppleScript - seznamy II.