Solved

From "01/01/1900" to "monday". How???

Posted on 1999-01-15
5
208 Views
Last Modified: 2010-04-16
Given a date, how can I work out the day of the week?
Since I'm in England and we do dates as dd/mm/yy, I want to enter a date, for example 15/04/1976 and the function to return a value for Thursday (which was the day of the week for 15/04/1976 if I remember). The way I'm thinking would probably work but it would be so long that it would just be dumb to use. No grace or finesse. Come on, astound me.
I think this could be hard so there's 200 points riding on it!
0
Comment
Question by:wierd_dave
5 Comments
 

Expert Comment

by:ahTri
ID: 1182312
I'm not really sure to attemp to take the 200 points u offer but i'm thinking of setting a fix date for example today (Saturday, 16/1/1999) calculate the number of days from today to the date u want to query, devide that number to 7, the remain of the division can be calculate to make the Date.

If u think this way work I will send u the set of objects to calculate the number of days from one day to another. Sorry for your 200 points if u not satisfy with this answer
0
 
LVL 84

Expert Comment

by:ozo
ID: 1182313
int dd=1;
int mm=1;
int yy=1900;
int jdn;
char *weekday[]={"Tuesday","Wednesday","THursday","Friday","Saturday","Sunday","Monday"};
if( mm < 3 ){ mm += 12; yy -= 1; }
jdn = dd+1720996+(mm+1)*306/10+yy*365 + yy/4 - yy/100 + yy/400;
printf("%s\n",weeday[jdn%7]);
0
 

Author Comment

by:wierd_dave
ID: 1182314
Sorry ahTri, that was fairly much the way I was thinking. I was going to work out the number of days from 01/01/1900 and use the remainder as you said to get the date.
Rejection seems so negative, but i've tried ozos' method and it is far batter than I would have some up with.
If ozo wants to submit an answer, they can have the 200 points.

Thanks to both of you.
0
 
LVL 1

Expert Comment

by:The_Brain
ID: 1182315
I have written a program to work out what day of the week it is on any specific date, in that there is a function that tells you the day number from 1900...

Well?  Interested?
0
 
LVL 84

Accepted Solution

by:
ozo earned 200 total points
ID: 1182316
char *weekday[]={"Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday","Monday"};
 dd=15;
 mm=4;
 yy=1976;
if( mm < 3 ){ mm += 12; yy -= 1; }
JulianDayNumber = 1721088 + dd + (mm-2)*367/12 + yy*365 + yy/4 - yy/100 + yy/400;
printf("%s\n",weeday[JulianDayNumber%7])
0

Featured Post

Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Quicksort a dynamic deque 33 73
how to understand recursion 12 230
Eclipse IDE - Cannot copy/paste from console output 8 259
What is sub-make ? 2 71
Errors will happen. It is a fact of life for the programmer. How and when errors are detected have a great impact on quality and cost of a product. It is better to detect errors at compile time, when possible and practical. Errors that make their wa…
This article will show you some of the more useful Standard Template Library (STL) algorithms through the use of working examples.  You will learn about how these algorithms fit into the STL architecture, how they work with STL containers, and why t…
The goal of the video will be to teach the user the concept of local variables and scope. An example of a locally defined variable will be given as well as an explanation of what scope is in C++. The local variable and concept of scope will be relat…
The viewer will learn how to pass data into a function in C++. This is one step further in using functions. Instead of only printing text onto the console, the function will be able to perform calculations with argumentents given by the user.

832 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question