Java's System.currentTimeMillis() to C++

T

tak

Hi.

I have a client / server application, which the client will send the
server a timestamp everytime when there is a transaction. The client
is using Java, and it sends the timestamp using java's
System.currentTimeMillis(), which returns, "the difference, measured
in milliseconds, between the current time and midnight, January 1,
1970 UTC."

On the server side - it is implemented in C++, so, with this number of
millis since 1/1/1970 - what C++ function can I use to get the month,
day, year, hour, minute, seconds, and milliseconds?

TIA,
Tak
 
V

Victor Bazarov

tak said:
I have a client / server application, which the client will send the
server a timestamp everytime when there is a transaction. The client
is using Java, and it sends the timestamp using java's
System.currentTimeMillis(), which returns, "the difference, measured
in milliseconds, between the current time and midnight, January 1,
1970 UTC."

On the server side - it is implemented in C++, so, with this number of
millis since 1/1/1970 - what C++ function can I use to get the month,
day, year, hour, minute, seconds, and milliseconds?

There is no standard function that would do that. You need to look up
time/date functions provided by your OS. It is possible that it does
not have it either and you're going to have to implement it yourself
using available functions.

Some systems implement 'time()' function so that it provides the number
of _seconds_ since the start of 1970. Not sure if it helps, though.

V
 
J

Justin.SpahrSummers

There is no standard function that would do that. You need to look up
time/date functions provided by your OS. It is possible that it does
not have it either and you're going to have to implement it yourself
using available functions.

What about gmtime(time(NULL))? That will return a pointer to a
structure with all the information you need except milliseconds. From
there, it'd be relatively easy to do some math to get one value like
Java does, just faking the milliseconds part or using some platform-
specific function to retrieve it.
 
V

Victor Bazarov

What about gmtime(time(NULL))? That will return a pointer to a
structure with all the information you need except milliseconds. From
there, it'd be relatively easy to do some math to get one value like
Java does, just faking the milliseconds part or using some platform-
specific function to retrieve it.

I believe that's what I meant by "have to implement it yourself". The
OP didn't specify whether milliseconds were important. The available
functions are undoubtedly described in the manual, including 'gmtime'
and 'time'. So, with additional information OP decided not to share,
I am sure all this stuff is figure-out-able.

Consider, however, that since 'gmtime' returns a pointer to some
static struct somewhere, it's not thread-safe, and special precautions
have to be made when using it on the server side, which is most likely
be threaded.

V
 
S

Scott Gifford

[...]
what C++ function can I use to get the month, day, year, hour,
minute, seconds, and milliseconds?

As others have said, it depends on the OS. In Unix, the library
function is gettimeofday(). Not sure about other systems, or if
there's a 3rd-party library available providing a portable interface.

-----Scott.
 
J

Justin.SpahrSummers

I believe that's what I meant by "have to implement it yourself". The
OP didn't specify whether milliseconds were important. The available
functions are undoubtedly described in the manual, including 'gmtime'
and 'time'. So, with additional information OP decided not to share,
I am sure all this stuff is figure-out-able.

I apologize. I took "available functions" to mean those "provided by
your OS," not what's available in the standard library.
 
J

James Kanze

I have a client / server application, which the client will send the
server a timestamp everytime when there is a transaction. The client
is using Java, and it sends the timestamp using java's
System.currentTimeMillis(), which returns, "the difference, measured
in milliseconds, between the current time and midnight, January 1,
1970 UTC."
On the server side - it is implemented in C++, so, with this number of
millis since 1/1/1970 - what C++ function can I use to get the month,
day, year, hour, minute, seconds, and milliseconds?

You can't get it in a single function, but the value % 1000 will
give milliseconds, and the value / 1000, converted to a time_t,
can be used with localtime() or gmttime() for the rest.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,756
Messages
2,569,540
Members
45,025
Latest member
KetoRushACVFitness

Latest Threads

Top