I am working with a file of data that contains "time values" (e.g.
"1225365563"), and I want to convert this data into something I can use
in a program I'm developing. From what I've read about time_t, it seems
this value, if converted from its string format, would be a date/time
value - if I could convert it. I find no conversion function that will
do anything for me, so I'm asking what I might do. Any thoughts? TIA
The first question is: what do these data actually contain. In
C++ (like in C), time_t is a sort of a vague hack used to
contain dates, times or date-times, depending on the
application. Portably, they're data-times; Posix guarantees
more, and I seem to recall that Windows conforms more or less to
what Posix requires here (but I'm not sure), so you may be able
to count on it being an integral type containing a value in
seconds from some given date and time (often midnight, 1 Jan,
1970, GMT on Unix machines). Given that:
-- For times, the general convention is to use a time in the
date 1 Jan 1970 (or whatever the cutoff date is, provided
that the cutoff date-time has a time of midnight).
-- For dates, the general convention is to use midnight of the
date in question.
Given that, you know that there are either 24*60*60 or
24*60*60+1 seconds in a day. The latter is rare enough that
in most applications, you can ignore it, so you can use the /, %
and * operators to force any given value to be a date or a time,
or the + operator to combine a date and a time into a date-time.
All of this, of course, for whatever timezone your system uses.
(GMT for most, if not all Unix---I'm lucky in that we need all
our dates and times in GMT anyway, so it works for me
.)