Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > C Programming > Calculate the date after subtracting nmbr of days form a date

Reply
Thread Tools

Calculate the date after subtracting nmbr of days form a date

 
 
Laery
Guest
Posts: n/a
 
      02-24-2005
Hi,

I'm currently adding a new module to an old borland C3.1 application
(dos).
And I need to calculate a date by subtracting the number of days from
a given date.

I know I could use an array of days in the months and go back by
leaping when 1 is reached. (keeping the 29the of feb and january/year
in mind).
But is there no function in Borland C3.1 which will do this for me?

I couldn't find one in the help?

Regards
Laery
 
Reply With Quote
 
 
 
 
John
Guest
Posts: n/a
 
      02-24-2005
(Laery) wrote in
news: om:

> I'm currently adding a new module to an old borland C3.1 application
> (dos).
> And I need to calculate a date by subtracting the number of days from
> a given date.


[...]

> I couldn't find one in the help?


Look-up difftime and localtime... They're functions that have been in the
Borland libraries at least since v1.5 and should help you do what you're
trying to do.


John
 
Reply With Quote
 
 
 
 
infobahn
Guest
Posts: n/a
 
      02-24-2005
Laery wrote:
>
> Hi,
>
> I'm currently adding a new module to an old borland C3.1 application
> (dos).
> And I need to calculate a date by subtracting the number of days from
> a given date.
>


Load the date into a struct tm, taking care to ensure that:

(a) all fields you don't set are cleared to 0, eg with:
struct tm date = (0); /* for now, just trust me on this */
(b) the year field contains the full year less 1900 (so, for 2005,
it would be set to 105).
(c) the month field is in the range 0 to 11.
(d) all other relevant fields are set correctly.

Now subtract the number of days you want, and then pass the
struct's address to mktime(), catching the result in a time_t
object.

If the result is not (time_t)-1 (which would indicate failure to
convert the date as you require), it can be passed to localtime()
or gmtime(), which both return pointers to struct tm from which
you can extract the date information you require.
 
Reply With Quote
 
Richard Bos
Guest
Posts: n/a
 
      02-24-2005
John <> wrote:

> (Laery) wrote in
> news: om:
>
> > I'm currently adding a new module to an old borland C3.1 application (dos).
> > And I need to calculate a date by subtracting the number of days from
> > a given date.

>
> > I couldn't find one in the help?

>
> Look-up difftime and localtime... They're functions that have been in the
> Borland libraries at least since v1.5 and should help you do what you're
> trying to do.


No, they won't. difftime() gives the difference, in seconds, between two
time_t's; it doesn't allow you to change an existing time_t. localtime()
converts from time_t to struct tm, but doesn't do any other
computations.
Using mktime() is the right solution. If BC3.1 doesn't have it yet
(i.e., if it's pre-ISO), you _may_ be able to get away with subtracting
days*24*3600 from a time_t, but do note that this relies on time_t being
a straight number of seconds since the epoch, which it isn't required to
be. Doing so would make your code unportable, but if it's already
Borland-specific, that may not be a problem. Adding a comment explaining
the hack would be a good idea, even so.

Richard
 
Reply With Quote
 
Stan Milam
Guest
Posts: n/a
 
      02-24-2005
Laery wrote:
> Hi,
>
> I'm currently adding a new module to an old borland C3.1 application
> (dos).
> And I need to calculate a date by subtracting the number of days from
> a given date.
>
> I know I could use an array of days in the months and go back by
> leaping when 1 is reached. (keeping the 29the of feb and january/year
> in mind).
> But is there no function in Borland C3.1 which will do this for me?
>
> I couldn't find one in the help?
>
> Regards
> Laery


I have a really robust date library which was published in the C User's
Journal a few years ago. Drop me a line and I will email it to you
(damn, I've got to get that web page up!). I also used it to write a
Unix shell utility called ADU (a date utility) that allows you to do
date math in the Unix shell. If there were a decent shell for Windows
you could use it there too.
 
Reply With Quote
 
Jack Klein
Guest
Posts: n/a
 
      02-25-2005
On Thu, 24 Feb 2005 11:04:15 +0000 (UTC), infobahn
<> wrote in comp.lang.c:

> Laery wrote:
> >
> > Hi,
> >
> > I'm currently adding a new module to an old borland C3.1 application
> > (dos).
> > And I need to calculate a date by subtracting the number of days from
> > a given date.
> >

>
> Load the date into a struct tm, taking care to ensure that:
>
> (a) all fields you don't set are cleared to 0, eg with:
> struct tm date = (0); /* for now, just trust me on this */


ITYM struct tm date = { 0 };

--
Jack Klein
Home: http://JK-Technology.Com
FAQs for
comp.lang.c http://www.eskimo.com/~scs/C-faq/top.html
comp.lang.c++ http://www.parashift.com/c++-faq-lite/
alt.comp.lang.learn.c-c++
http://www.contrib.andrew.cmu.edu/~a...FAQ-acllc.html
 
Reply With Quote
 
Randy Howard
Guest
Posts: n/a
 
      02-25-2005
In article <>,
says...
> Laery wrote:
> >
> > Hi,
> >
> > I'm currently adding a new module to an old borland C3.1 application
> > (dos).
> > And I need to calculate a date by subtracting the number of days from
> > a given date.
> >

>
> Load the date into a struct tm, taking care to ensure that:
>
> (a) all fields you don't set are cleared to 0, eg with:
> struct tm date = (0); /* for now, just trust me on this */


It would be more trustworthy with braces instead of parens.

--
Randy Howard (2reply remove FOOBAR)
"Making it hard to do stupid things often makes it hard
to do smart ones too." -- Andrew Koenig
 
Reply With Quote
 
infobahn
Guest
Posts: n/a
 
      02-25-2005
Jack Klein wrote:
>
> On Thu, 24 Feb 2005 11:04:15 +0000 (UTC), infobahn
> <> wrote in comp.lang.c:
>
> > (a) all fields you don't set are cleared to 0, eg with:
> > struct tm date = (0); /* for now, just trust me on this */

>
> ITYM struct tm date = { 0 };


I do indeed. I was clearly tempting fate a little too much with that
comment.
 
Reply With Quote
 
infobahn
Guest
Posts: n/a
 
      02-25-2005
Randy Howard wrote:
>
> In article <>,
> says...
> > Laery wrote:
> > >
> > > Hi,
> > >
> > > I'm currently adding a new module to an old borland C3.1 application
> > > (dos).
> > > And I need to calculate a date by subtracting the number of days from
> > > a given date.
> > >

> >
> > Load the date into a struct tm, taking care to ensure that:
> >
> > (a) all fields you don't set are cleared to 0, eg with:
> > struct tm date = (0); /* for now, just trust me on this */

>
> It would be more trustworthy with braces instead of parens.


<sigh>
Some days, it just doesn't pay to fire up your newsreader. :-$
</sigh>
 
Reply With Quote
 
dragoncoder
Guest
Posts: n/a
 
      02-25-2005
Hello Stan

If you could mail me a copy of the date library you are talking about,
that will be very kind of you. Just mail it to me at

ptiwaryATmahindrabtDOTcom

Thanks in advance.

 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Finding a prior date by subtracting from today Jim in Arizona ASP .Net 3 12-27-2006 10:25 PM
subtracting days from date =?Utf-8?B?TWFubnkgQ2hvaGFu?= ASP .Net 5 11-09-2004 01:25 AM
De jours en jours - Octobre 2004 / Days after days - October 2004 Serge IZOARD Digital Photography 0 11-01-2004 09:07 PM
calculate date 4 days ago joe shaboo Perl Misc 10 05-05-2004 07:52 PM
subtracting two dates to get number of days between Brian Henry ASP .Net 6 11-19-2003 09:50 PM



Advertisments
 



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57