Skip to main content

Day of Week according to Date

We have 7 days in a week. And the first Day of the Date System is Sunday. And it should be. So, 01.01.0001, i.e.,
First Date of Christ was Sunday. We just number the days as follows.
0 = Sunday
1 = Monday
2 = Tuesday
3 = Wednessday
4 = Thursday
5 = Friday
6 = Saturday

So, we can handle every day by the reminder of 7. Cause, u just see, after every 7 days the same day is repeated.
Then, lets a rough Calculation.
01/01/0001 => Sunday = 0
Now, we just try to find out the day on 1st January on next year, i.e., 01/01/0002
0001 has 365 days.
So, after 365 days which day will come? To find out the answer of this question we have to perform following calculation.
7 ) 365 ( 52
    35
   -----
     15
     14
    ----
      1 
The reminder is 1, i.e.,Monday.
But, using this method, it is very critical to find out the day of 1st January of 1988. So, we have an another idea.
Find out how many Leap years are present before current year. Suppose it is L.
So,
L = y/4If Current year is not a Leap Year
L = (y/4) -1 If Current year is a Leap Year
Now, find out the day number by dividing the expression (y-1+L) by 7 and take the reminder as Day Number.
OK, Let's take a test. Suppose date is 1.1.2009
y = 2009
L = 2009/4 = 502
So the Day Number will be = ( 2009 - 1 + L ) % 7 = 2510 % 7 = 4
The Day is:: Thursday
Now the above Logic is implemented by following Java Program.
import java.lang.*;
import java.io.*;


class Calender {
  public static void main(String args[]) throws IOException{

    String day[]={"SUNDAY","MONDAY","TUESDAY","WEDNESSDAY","THURSDAY","FRIDAY","SATURDAY"};
    BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

    System.out.print("Enter a Date (in format dd/mm/yyyy):: ");
    
    String dt=in.readLine();
    
    if(dt.length()!=10)
    {
 System.out.println("Invalid Entry ! ! !");
 return; 
    }

    int d=Integer.parseInt(dt.substring(0,2));
    if(d<1 || d>31) 
 return;
 
    int m=Integer.parseInt(dt.substring(3,5));
    if(m<1 || m>12 )
 return;
 
    int y=Integer.parseInt(dt.substring(6,10));
    if(y<1)
 return;
    int f,l;

    if(y%4==0 || y%400==0)
    {
 f=29;
 l=(y/4)-1;
    }
    else
    {
 f=28;
 l=y/4;
    }
   
    int days[] = {31,f,31,30,31,30,31,31,30,31,30,31};
  
    f=(y-1+l)%7;
  
    int totd=0;

    for(int i=0;i<m-1;i++)
 totd+=days[i];
    totd+=d;
    totd+=(f-1);
  
    System.out.println("The Day is :: " + day[totd%7]);
 
 }
  
}

It may be a usefull sub program for Calender based Software......

Comments

Popular posts from this blog

Class Point:: It holds co-ordinates of a point in format (x,y)

A class Named "Point" which stores the Co-ordinates of a point in (x,y) Format. This Class Contains:: O Constructor with default arguments O Copy Constructor O Function to display which Co-ordinate a Point belongs to O Function to get value of x of a point O Function to get value of y of a point O Function to get the Radious Vector (r) of a point O Function to get the Theta of a point O Overloaded Operator - to find out distance between two points O Overloaded Operator >> to take input O Overloaded operator O Destructor #include<iostream.h> #include<math.h> class point{ //Data Members int x,y; //They hold the value of X and Y co-ordinate of a Point. public: //Member Functions point(int t1=0, int t2=0) //Constructor with default arguments. { x=t1; y=t2; } point(point &t) //Copy Constructor { x=t.x; y=t.y; } int coordinate(void); //It returns the point's Co-ordinate, e.g., 1, 2, 3, or 4th. int getx(...

How to set Set-Top Box to Resume automatically to last Channel after switch on?

How to set customised automatic Resume Channel to last viewed in Set-Top Box?  Introduction In the era of Digitally fast growing life WiFi enabled smart devices and also voice controlled smart devices are trying to be companion of every human being. But, all human do not change their habit at the same time. It may be cause of mental attachment or financial limits or unwillingness or though as unnecessary. What ever the reason may be, there exists the old technology, like IR(Infrared), RF(Radio Frequency), etc. So, this article for them who are using "Un-smart" TV like me in this time of Smart World. I was searching for a solution to set my Set-top Box of Videocon DTH (controlled by a RF Remote) to resume the last viewed channel when I power on my TV anytime. Suppose, I was watching NAT-Geo and switch off my (Un-smart) TV, even switch off the plug power at board. Now, after some time / on the next day, when I switch on my TV it will directly tune to the last viewed channel, i....