Solved

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

Posted on 1999-01-15
5
203 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

How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

Join & Write a Comment

Article by: SunnyDark
This article's goal is to present you with an easy to use XML wrapper for C++ and also present some interesting techniques that you might use with MS C++. The reason I built this class is to ease the pain of using XML files with C++, since there is…
  Included as part of the C++ Standard Template Library (STL) is a collection of generic containers. Each of these containers serves a different purpose and has different pros and cons. It is often difficult to decide which container to use and …
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.

708 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

Need Help in Real-Time?

Connect with top rated Experts

15 Experts available now in Live!

Get 1:1 Help Now