|
Boost : |
Subject: [boost] Cross-platform date/time problems
From: Zachary Turner (divisortheory_at_[hidden])
Date: 2009-11-01 01:15:15
Hello list,
Apologies for the cross-posting, this originally went to the boost-users
list but it got no responses, and then I also realized it was actually more
appropriate here.
Suppose I have a cross-platform agent that communicates with a server.
Agent from platform X sends a message to the server which contains a
date/time. Server sends a message to another agent running platform Y with
the same date/time. In practice X/Y are always either windows/linux or
linux/windows. The server always tells the agent which platform's native
format the time is represented in, so there should be no problem. Ideally
I'd like to write the following code:
ptime time;
if (msg.is_from_windows())
{
time = from_ftime<ptime>(msg.time());
}
else
{
time = from_time_t(msg.time());
}
But this doesn't work because from_ftime<> is not defined on linux. If
from_ftime<> is already templated on the FILETIME type, is there any reason
it needs to be #ifdef'd out on non-windows platforms? I mean, a FILETIME
is really just a uint64, can't the templated function also just operate on a
boost::uint64_t?
Zach
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk