Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Acessing the "time" Part of time_t Value

1 view
Skip to first unread message

Mike Copeland

unread,
Nov 20, 2008, 2:03:33 AM11/20/08
to
How do I mask out all but the _time_ components of a time_t value?
Specifically, I have the following:
time_t wTime = 1226764757;
I happen to know that this is November 16, 2008 @ 8:59:17, but I have
many other such items from which I want to use only the _time_ portion
(e.g. 8:59:17). How do I eliminate the "date" portions of either the
time_t value or the number I assign to it? TIA

miso.liptak

unread,
Nov 20, 2008, 2:56:08 AM11/20/08
to

Is number of seconds since midnight what you want? time(0) % 86400?
m.

Pete Becker

unread,
Nov 20, 2008, 7:04:01 AM11/20/08
to

Use gmtime() or localtime() to convert it to a tm.

--
Pete
Roundhouse Consulting, Ltd. (www.versatilecoding.com) Author of "The
Standard C++ Library Extensions: a Tutorial and Reference
(www.petebecker.com/tr1book)

Pete Becker

unread,
Nov 20, 2008, 7:08:03 AM11/20/08
to

The requirement (from the C standard) is that time_t is an "arithmetic
type capable of representing times ...". That's all. It doesn't have to
represent seconds, nor does it have to be based on midnight.

James Kanze

unread,
Nov 20, 2008, 8:43:37 AM11/20/08
to

That depends on how precise and how portable you have to be.
Not all days have exactly 86400 seconds, and time_t can be any
numeric type, with any representation---if it uses the
representation that was current in MS-DOS, your results are
meaningless, and if it is a double, your solution won't even
compile. (But for a lot of uses, it's adequate. It's what I
currently do---but in my case, even if I'm a minute or so off,
it's no big deal, and I only have to support
Unix-likes---Solaris and Linux.)

--
James Kanze (GABI Software) email:james...@gmail.com
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34

0 new messages