START > APPLESCRIPT > Praktische Handler > Kalenderwoche berechnen

Kalenderwoche berechnen

Hier ein bereits etwas betagter, aber immer noch super funktionierender Handler von Armin Briegel, um die Kalenderwoche per Applescript zu berechnen. Dank an ihn, dass ich den Handler hier veröffentlichen darf.

Der weekdayForDate()-Handler ist u.U. durch weekday of ... as integer austauschbar, aber dann u.U. nicht unter jeder Applescript- bzw. OS-Version lauffähig. Unter 10.4.11 geht's, unter Leopard habe ich noch nicht getestet, aber dort hat sich mal wieder etwas am date geändert.

-- :::::::::::::::::::::::::::::::::  hohabadu.de  :::::::::::::::::::::::::::::::::

--        ( Mit freundlicher Genehmigung des Autoren Armin Briegel )
--         [ Quelle: http://rsvp.atsites.de/stories/storyReader$285 ]

on kalenderwoche(d)
   copy d to basedate
   set day of basedate to 4
   set month of basedate to January
   set firstdayoffirstweek to basedate - ((weekdayForDate(basedate) + 5) mod 7) * days
   set calendarweek to ((d - firstdayoffirstweek) div weeks) + 1
   if calendarweek = 53 then
      set year of basedate to (year of basedate) + 1
      set firstdayoffirstweek to basedate - ((weekdayForDate(basedate) + 5) mod 7) * days
      if firstdayoffirstweek < d then
         set calendarweek to 1
      end if
   else if calendarweek = 1 then
      if firstdayoffirstweek > d then
         set calendarweek to 53
      end if
   end if
   return calendarweek as integer
end kalenderwoche

on weekdayForDate(d)
   set wd to weekday of d
   if wd is Sunday then
      return 1
   else if wd is Monday then
      return 2
   else if wd is Tuesday then
      return 3
   else if wd is Wednesday then
      return 4
   else if wd is Thursday then
      return 5
   else if wd is Friday then
      return 6
   else if wd is Saturday then
      return 7
   end if
   
   return -1
end weekdayForDate

-- Beispielaufrufe
on run
   log kalenderwoche(current date)
   log kalenderwoche(date "Mittwoch, 31. Dezember 2003 0:00:00 Uhr")
   log kalenderwoche(date "Freitag, 31. Dezember 2004 0:00:00 Uhr")
   log kalenderwoche(date "Donnerstag, 1. Januar 2004 0:00:00 Uhr")
   log kalenderwoche(date "Freitag, 31. Dezember 2004 0:00:00 Uhr")
   log kalenderwoche(date "Samstag, 1. Januar 2005 0:00:00 Uhr")
   log kalenderwoche(date "Sonntag, 2. Januar 2005 0:00:00 Uhr")
   log kalenderwoche(date "Montag, 3. Januar 2005 0:00:00 Uhr")
end run
 Im Scripteditor öffnen



Powered By CMSimple Design By NMuD Top