Hacker News new | ask | show | jobs
by great_kraken 3744 days ago
Here's how it's implemented in Ruby:

  static int
  calc_wday(int year, int month, int day)
  {
      int a, y, m;
      int wday;

      a = (14 - month) / 12;
      y = year + 4800 - a;
      m = month + 12 * a - 3;
      wday = day + (153*m+2)/5 + 365*y + y/4 - y/100 + y/400 + 2;
      wday = wday % 7;
      return wday;
  }
Source: https://github.com/ruby/ruby/blob/5396d8a1ab52b4da4f51991094...
1 comments

perl!

  sub GetDayofWeek {

    my ($year, $month, $day) = @_;
    
     my @monthTable = (0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4);
     
     my @DayofWeek = qw(Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday);
     
     $year -=  ($month < 3) ? 1: 0;
     
     return $DayofWeek[($year + $year / 4 - $year / 100 + $year / 400 + $monthTable[$month - 1] + $day) % 7];
       
  }