'int air_date' '%'?


 
Thread Tools Search this Thread
Top Forums Programming 'int air_date' '%'?
# 1  
Old 01-03-2011
'int air_date' '%'?

int air_date='20100103'; //2010 - Jan - 03

/* My goal here is to subtract a day. */

int day = air_date % 100; //?????? Is this right?

//Are there any functions time/date for this type of date format?

Smilie
# 2  
Old 01-03-2011
Which language?
# 3  
Old 01-03-2011
C++, g++ compiler for Linux.
# 4  
Old 01-04-2011
Is there a reason you are encoding the date as the integer 20,100,103 instead of the number of seconds past the epoch or as a julian date? The reason I ask is that there are oodles of Date, Date/Time, and Julian Date classes out there for you to steal, er, utilize. But if you need the date to be in the aforementioned integer, you will have to manage how you add and subtract dates. Subtracting 1 will not work as intended:
20010102
20010101
20010099
20010098
Nor will adding 1:
20010227
20010228
20010229
20010230
---------- Post updated at 12:51 PM ---------- Previous update was at 12:48 PM ----------

If you want to extract the parts of the date, then:
Code:
int day   = air_date % 100;
int month = ( air_date / 100 ) % 100;
int year  = air_date / 10000;

# 5  
Old 01-04-2011
Reply to integer date program.

The reason for me using that style of date is because that is what exists in my database. For the time being I wrote some code which I will post below. I wouldn't mind converting to a Julian style date or some other style if that will help me deal with things I just have not got there yet. Thanks for your reply:

Code:
string sub1day(string date)
{
  string day = date.substr(6,2);
  string month = date.substr(4,2);
  string year = date.substr(0,4);
  int iday = atoi(day.c_str());
  int imonth = atoi(month.c_str());
  int iyear = atoi(year.c_str());
  iday = iday -1;
  if(iday==0) {
    imonth = imonth -1;
    if(imonth == 0) {
      int iyear = iyear - 1;
      int imonth = 12;
      int iday = 31;
    }
    else if(imonth == 1 || imonth == 3 || imonth == 5 || imonth == 7 || imonth == 8 || imonth == 10 || imonth == 12)
    {
      iday = 31;
    }
    else if(imonth == 4 || imonth == 6 || imonth == 9 || imonth == 9 || imonth == 11)
    {
      iday = 30;
    }
    else if(imonth == 2)
    {
      iday = 28;
    }
  }
  stringstream sreturn;
  if(iday < 10 && imonth < 10) { sreturn << iyear << "0" << imonth << "0" << iday; }
  else if(imonth < 10) { sreturn << iyear << "0" << imonth << iday; }
  else if(iday < 10) { sreturn << iyear << imonth << "0" << iday; }
  return sreturn.str();
}

# 6  
Old 01-07-2011
I do see one problem:
Quote:
Originally Posted by sepoto
<snip>
Code:
    else if(imonth == 2)
    {
      iday = 28;
    }

You need to account for leap-years:
Code:
    else if(imonth == 2) {
      if (iyear % 4) {
        iday = 28;
      }
       else {
        iday = 29;
      }
    }

Please keep in mind that this will only work properly if your dates occurs between the years 1901 and 2099. A more accurate implemention would be:
Code:
     else if(imonth == 2) {
      if (iyear % 400) {
        if (iyear % 100) {
          if (iyear % 4) {
            iday= 28;
          }
          else {
            iday = 29;
          }
        }
        else {
          iday= 28;
        }
      }
       else {
        iday = 29;
      }
    }

This User Gave Thanks to m.d.ludwig For This Post:
# 7  
Old 01-07-2011
Thanks a lot! I was wondering what a good implementation of leap year would be. You code is a huge help! Smilie
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Programming

IPv4 string->int

Does anyone know how to convert a IP address given as 'string' into a 'u_int32_t'? Are there any build any functions already? (1 Reply)
Discussion started by: Freaky123
1 Replies

2. Programming

Handle int listen(int sockfd, int backlog) in TCP

Hi, from the manual listen(2): listen for connections on socket - Linux man page It has a parameter called backlog and it limits the maximum length of queue of pending list. If I set backlog to 128, is it means no more than 128 packets can be handled by server? If I have three... (3 Replies)
Discussion started by: sehang
3 Replies

3. Shell Programming and Scripting

From string to int ?

hello guys i m new to shell scripting and can't find out why this structure is not right I m guessing this happens because $LINESUM is a string . so how can i do this ? i want my script to do so many loops as the number of the lines of one custom file. #!/bin/bash echo give me path name... (5 Replies)
Discussion started by: xamxam
5 Replies

4. Programming

C++ ASCI int values

Hi All, I'm currently fiddling about trying to learn C++ and wrote a little program that outputs the ASCI values for numbers 0-255 but it's got a problem... For the numbers 255 thru 128 it shows a negative number. For numbers 127-0 (my loop decrements) it shows the correct numerical value...... (6 Replies)
Discussion started by: pondlife
6 Replies

5. Programming

int *ptr + max possible value

From reading my C book, Im aware that the integers have a maximum value which depends on what type of processor you are using (since they use 16-bit or 32-bit instructions). Now I know pointers are very flexible, since they can reference anything, but in the case of integer pointers, can they... (4 Replies)
Discussion started by: JamesGoh
4 Replies

6. Programming

to convert int to hex

Hi, Can you help me in converting int value to hex in a single command. Thanks (8 Replies)
Discussion started by: naan
8 Replies

7. UNIX for Dummies Questions & Answers

int open(const char *pathname, int flags, mode_t mode) doubt...

hello everybody! I want to create a file with permissions for read, write, and execute to everybody using C, so I write this code: #include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> int main(){ int fileDescriptor; fileDescriptor =... (2 Replies)
Discussion started by: csnmgeek
2 Replies

8. Programming

to get the correct value with unsigned int

hi, Please help me with the following code to get the difference in values. struct a{ int b1; int c1; char d1; } main() { unsigned int b=10; unsigned int c; c = b - (unsigned int )sizeof(a); printf("%d",c); } Here c returns some junk value. How can i get the... (2 Replies)
Discussion started by: naan
2 Replies

9. Programming

difference between int ** func() and int *& func()

What is the difference between int** func() and int*& func(). Can you please explain it with suitable example. Thanks, Devesh. (1 Reply)
Discussion started by: devesh
1 Replies

10. Programming

Unsigned int

How can I store and/or print() a number that is larger than 4 294 967 295 in C? is int64_t or u_int64_t what I need ? if, so how can I printf it to stdout? (2 Replies)
Discussion started by: nimnod
2 Replies
Login or Register to Ask a Question