Solved

How do I determine week number in a month?

Posted on 2007-11-19
3
555 Views
Last Modified: 2013-12-26
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
Comment
Question by:farekat
  • 2
3 Comments
 
LVL 53

Expert Comment

by:Infinity08
ID: 20312335
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
 

Author Comment

by:farekat
ID: 20313225
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
 
LVL 53

Accepted Solution

by:
Infinity08 earned 500 total points
ID: 20314004
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

Featured Post

How to improve team productivity

Quip adds documents, spreadsheets, and tasklists to your Slack experience
- Elevate ideas to Quip docs
- Share Quip docs in Slack
- Get notified of changes to your docs
- Available on iOS/Android/Desktop/Web
- Online/Offline

Join & Write a Comment

Suggested Solutions

Title # Comments Views Activity
convert char array to number in c 5 77
haveThree challenge 22 100
changeXy challenge 13 57
php session folder question (Code Igniter) 3 45
Summary: This tutorial covers some basics of pointer, pointer arithmetic and function pointer. What is a pointer: A pointer is a variable which holds an address. This address might be address of another variable/address of devices/address of fu…
The purpose of this article is to fix the unknown display problem in Linux Mint operating system. After installing the OS if you see Display monitor is not recognized then we can install "MESA" utilities to fix this problem or we can install additio…
The goal of this video is to provide viewers with basic examples to understand opening and reading files in the C programming language.
The goal of this video is to provide viewers with basic examples to understand and use switch statements in the C programming language.

762 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

19 Experts available now in Live!

Get 1:1 Help Now