Improve company productivity with a Business Account.Sign Up

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 566
  • Last Modified:

How do I determine week number in a month?

Hello,

I have a batch job that I am writing that is scheduled to be run every Tuesday throughout the year.  
I have a huge file that I am ftp'ing to another machine but I am dividing it up into 4 files.
The first Tuesday of the month will write all of the data to these four files and ftp the first file to
the other machine.The second, third, and fourth(last) Tuesday of the month will ftp the other files.

Now I need to determine what Tuesday in the month I am in.  So if it is the first Tuesday of the month, I need it to do some calculation and if it is the 2nd, 3rd, 4th Tuesday then my job will do something else.  I know there are circumstances where there are 5 Tuesdays in a month but I need to ignore that in my code.  Can someone provide me with the code or ideas to do this?

Thanks in advance!
0
farekat
Asked:
farekat
  • 2
1 Solution
 
Infinity08Commented:
Use struct tm :

You can easily detect whether a day is tuesday or not using the tm_wday field.
The day of the month can be found in tm_mday (note the first tuesday will have a tm_mday value <= 7, the second tuesday a value between 8 and 14, etc.).


So, something like :

#include <time.h>
 
time_t now;
struct tm *nowtm = 0;
 
time(&now);
nowtm = localtime(&now);
 
if (nowtm->tm_wday == 2) {  /* tueasday */
  if (nowtm->tm_mday <= 7) {
    /* first tuesday of the month */
  }
  else if (nowtm->tm_mday <= 14) {
    /* second tuesday of the month */
  }
  else if (nowtm->tm_mday <= 21) {
    /* third tuesday of the month */
  }
  else if (nowtm->tm_mday <= 28) {
    /* fourth tuesday of the month */
  }
}

Open in new window

0
 
farekatAuthor Commented:
Would taking the actual date in the month (i.e. today = 19) and dividing it by 7+1 (using integers) give me the week number too?  Is there situations where that won't work?
0
 
Infinity08Commented:
if dom is the day of the month (1 ... 31) :

        ((dom - 1) / 7) + 1

would give you the week number (1, 2, etc.), assuming that / is integer division.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Free Tool: Site Down Detector

Helpful to verify reports of your own downtime, or to double check a downed website you are trying to access.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now