Peter Fischer
Datum als String, was soll das? -- Nun, current date liefert recht umfangreiche Informationen zurück.
Beispiel: set d to (current date) as text
Ergebnis: "Donnerstag, 20. Juli 2000 17:04:51 Uhr"
Braucht man das Datum z.B. als Zusatz bei einem BackUp-Ordner, ist das Ergebnis natürlich etwas zuviel des Guten. Darum müssen die einzelnen Bestandteile in separate Variablen gespeichert werden. Erst dann ist es möglich, das Datum so einzusetzen, wie es gerade gebraucht wird.
So geht's:
-- Datumsangaben
set d to current date
-- schreibt das aktuelle Datum und Uhrzeit in die Variable d
set derTag to text -2 thru -1 of ("0" & d's day)
-- extrahiert den Tag aus d
(* Durch diese Vorgehensweise wird nicht erst
lange geprüft, ob der Tag kleiner 10 ist, es wird einfach
eine führende Null davorgesetzt. Wenn der Tag also
der 25ste wäre, ist das Ergebnis der eingeklammerten
Konstruktion 025. Durch "text -2 thru -1" werden die Daten
daraus von hinten herein eingelesen -2 = 2, -1 = 5.
Bei einem Tag kleiner 10: z.B. der 8te (08); -2 = 0, -1 = 8
*)
set Monat to word 3 of ((current date) as text) -- extrahiert den Monat (als Monatsnamen) aus d
-- Monat als Zahl
-- Der folgende Einzeiler stammt von H.P. Müller - an dieser Stelle vielen Dank dafür
set MM to text -2 thru -1 of ("0" & ((month of d) * 1))
month of d würde normalerweise den Monatsnamen liefern. Dadurch dass wir das Ergebnis mit 1 multiplizieren gibt uns AppleScript ganz richtig den Monat als Zahl zurück.
set Jahr to ((year of d) as text) -- extrahiert das Jahr aus d
set dasDatum to derTag & "." & MM & "." & Jahr -- fügt die extrahierten Daten zu einem Datum zusammen
Wie die letzte Zeile zeigt, kann man hier das Datum beliebig formatieren, da es aus einzelnen Textbausteinen
besteht.
Das amerikanische Datumsformat wäre dann also:
set dasDatum to MM & "/" & derTag & "/" & Jahr
Statt MM (Monat als Zahl) kann natürlich auch die Variable Monat verwendet werden. In dieser haben wir ja den Monatsnamen gespeichert.
Jetzt taucht natürlich die Frage auf, warum fragt man beim Monat nach word 3 und nicht nach ((month of d) as text).
Nun, diese Möglichkeit würde ein anderes Ergebnis liefern: -> engl. Monatsnamen.
Genauso verhält es sich mit dem Wochentag.
word 1 of ((current date) as text) --> systemspezifischer Wochentag (also auf dt. System auch deutsche Wochentage)
(weekday of d) as text --> engl. Wochentag
Ich hoffe, es war etwas hilfreich.
Peter Fischer
|