Weekday

From Scriptwiki
Jump to: navigation, search

The following alias returns the name of a date you have specified. Only after 01.01.0001. If no date is specified, it returns the name of the current day.


; format: $day2 or $day2(day,month,year) or $day2(day.month.year)
alias day2 {   
 ; if there are no parameter, just return the name of the current day
 if (!$1) { return $day }
 ; we get parameters
 else {
   ; lets check if we get $day2(day.month.year), then tokenize it
   if (($1) && (!$2) && ($numtok($1,46) == 3)) { tokenize 46 $1 }
   ; lets first check if we got 3 correct ones
   if (($1 !isnum 1-31) || ($2 !isnum 1-12) || (!$3)) { return $false }
   ; there are no 5.10.1582 -> 14.10.1582 due to the change of calendar
   if (($3 == 1582) && ($2 == 10) && ($1 > 4) && ($1 < 15)) { return $false }
   ; we need the days of months
   var %month = 31,28,31,30,31,30,31,31,30,31,30,31
   ; lets calc all days of all complete years and days in the current month
   var %days = $calc((($3 - 1)*365) + ($1 - 1))
   ; now lets include all complete month in the current year (we need to loop through all)
   var %i = 0
   while (%i < $calc($2 - 1)) {
     %days = $calc(%days + $gettok(%month,$calc(%i + 1),44))
     inc %i
   }
   ; decrease days by ten due to change of calendar
   if (($3 > 1582) || (($3 == 1582) && (($2 > 10) || (($2 == 10) && ($1 > 4))))) {
     %days = $calc(%days - 10)
   }
   ; leapyears til 1599:  all years divided by 4
   ; after 1600: all years divided by 4 but not at full centurys, only if they are dividable by 400
   var %leapyears = $floor($calc($3 / 4))
   if (($calc($3 % 4) == 0) && ($2 < 3)) { dec %leapyears }
   if ($3 >= 1600) { 
     %leapyears = $calc(%leapyears - $floor($calc(($3 - 1600) / 100)))
     %leapyears = $calc(%leapyears + $floor($calc(($3 - 1600) / 400))) 
     if (($calc($3 % 100) == 0) && ($2 < 3)) {
       inc %leapyears
       if ($calc($3 % 400) == 0) { dec %leapyears }
     }
   }
   %days = $calc(%days + %leapyears)
   ; lets show the result
   var %week = Saturday,Sunday,Monday,Tuesday,Wednesday,Thursday,Friday
   var %erg = $gettok(%week,$calc((%days % 7) + 1),44)
   return %erg
 }
}