Skip to content
Related Articles

Related Articles

Find day of the week for a given date

View Discussion
Improve Article
Save Article
  • Difficulty Level : Expert
  • Last Updated : 08 Sep, 2022
View Discussion
Improve Article
Save Article

Write a function that calculates the day of the week for any particular date in the past or future. A typical application is to calculate the day of the week on which someone was born or some other special event occurred. 

Recommended Practice

Following is a simple function suggested by Sakamoto, Lachman, Keith and Craver to calculate day. The following function returns 0 for Sunday, 1 for Monday, etc.

Understanding the Maths:

14/09/1998
dd=14
mm=09
yyyy=1998 //non-leap year

Step 1: Informations to be remembered.
 Magic Number Month array.
 For Year: {0,3,3,6,1,4,6,2,5,0,3,5}
 DAY array starting from 0-6: {Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday}
 Century Year Value: 1600-1699 = 6
      1700-1799 = 4
      1800-1899 = 2
      1900-1999 = 0
      2000-2099 = 6..

Step 2: Calculations as per the steps
 
 Last 2 digits of the year:  98
 Divide the above by 4:     24
 Take the date(dd):      14
 Take month value from array: 5 (for September month number 9)
 Take century year value:  0  ( 1998 is in the range 1900-1999 thus 0)
          -----
 Sum:        141
 
 Divide the Sum by 7 and get the remainder: 141 % 7 = 1
 
 Check the Day array starting from index 0: Day[1] = Monday

**If leap year it will be the remainder-1

C++




/* A program to find day of a given date */
#include <bits/stdc++.h>
using namespace std;
 
int dayofweek(int d, int m, int y)
{
    static int t[] = { 0, 3, 2, 5, 0, 3,
                       5, 1, 4, 6, 2, 4 };
    y -= m < 3;
    return ( y + y / 4 - y / 100 +
             y / 400 + t[m - 1] + d) % 7;
}
 
// Driver Code
int main()
{
    int day = dayofweek(30, 8, 2010);
    cout << day;
 
    return 0;
}
 
// This is code is contributed
// by rathbhupendra

C




// C code to find day of a given date
#include <stdio.h>
 
int dayofweek(int d, int m, int y)
{
    static int t[] = { 0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4 };
    y -= m < 3;
    return (y + y / 4 - y / 100 + y / 400 + t[m - 1] + d)
           % 7;
}
 
// Driver function to test above function
int main()
{
    int day = dayofweek(30, 8, 2010);
    printf("%d", day);
 
    return 0;
}

Java




// Java code to implement the approach
import java.util.*;
 
class FindDay {
    static int dayofweek(int d, int m, int y)
    {
        int t[] = { 0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4 };
        if (m < 3)
            y--;
        return (y + y / 4 - y / 100 + y / 400 + t[m - 1]
                + d)
            % 7;
    }
 
    // Driver code
    public static void main(String[] args)
    {
        int day = dayofweek(30, 8, 2010);
        System.out.println(day);
    }
}
/*Contributed and written by Aniket Dey*/

Python3




# Python3 program to find day
# of a given date
 
def dayofweek(d, m, y):
    t = [ 0, 3, 2, 5, 0, 3,
          5, 1, 4, 6, 2, 4 ]
    y -= m < 3
    return (( y + int(y / 4) - int(y / 100)
             + int(y / 400) + t[m - 1] + d) % 7)
 
# Driver Code
day = dayofweek(30, 8, 2010)
print(day)
 
# This code is contributed by Shreyanshi Arun.

C#




// C# program to find day of a given date
using System;
 
class GFG {
     
    static int dayofweek(int d, int m, int y)
    {
        int []t = { 0, 3, 2, 5, 0, 3, 5,
                            1, 4, 6, 2, 4 };
        y -= (m < 3) ? 1 : 0;
         
        return ( y + y/4 - y/100 + y/400
                         + t[m-1] + d) % 7;
    }
     
    // Driver Program to test above function
    public static void Main()
    {
        int day = dayofweek(30, 8, 2010);
         
        Console.Write(day);
    }
}
 
// This code is contributed by Sam007.

PHP




<?php
// PHP program to find
// day of a given date
function dayofweek($d, $m, $y)
{
    static $t = array(0, 3, 2, 5, 0, 3,
                      5, 1, 4, 6, 2, 4);
    $y -= $m < 3;
    return ($y + $y / 4 - $y / 100 +
            $y / 400 + $t[$m - 1] + $d) % 7;
}
 
// Driver Code
$day = dayofweek(30, 8, 2010);
echo $day;
 
// This code is contributed by mits.
?>

Javascript




<script>
 
// Javascript program to find day of a given date
 
function dayofweek(d, m, y)
{
    let t = [ 0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4 ];
    y -= (m < 3) ? 1 : 0;
    return ( y + y/4 - y/100 + y/400 + t[m-1] + d) % 7;
}
 
// Driver Code
 
    let day = dayofweek(30, 8, 2010);
    document.write(Math.round(day));
 
</script>

Output

1

Time Complexity: O(1)
Space Complexity: O(1), since no extra space has been taken.

See this for explanation of the above function.
References: 
http://en.wikipedia.org/wiki/Determination_of_the_day_of_the_week
This article is compiled by Dheeraj Jain and reviewed by GeeksforGeeks team. Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above


My Personal Notes arrow_drop_up
Recommended Articles
Page :

Start Your Coding Journey Now!