Velocity Reviews

Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   C++ (http://www.velocityreviews.com/forums/f39-c.html)
-   -   Java's System.currentTimeMillis() to C++ (http://www.velocityreviews.com/forums/t540631-javas-system-currenttimemillis-to-c.html)

tak 09-28-2007 02:29 PM

Java's System.currentTimeMillis() to C++
 
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


Victor Bazarov 09-28-2007 02:33 PM

Re: Java's System.currentTimeMillis() to C++
 
tak wrote:
> 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
--
Please remove capital 'A's when replying by e-mail
I do not respond to top-posted replies, please don't ask



Justin.SpahrSummers@gmail.com 09-28-2007 04:02 PM

Re: Java's System.currentTimeMillis() to C++
 
On Sep 28, 9:33 am, "Victor Bazarov" <v.Abaza...@comAcast.net> wrote:
> tak wrote:
> > 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.


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.


Victor Bazarov 09-28-2007 04:09 PM

Re: Java's System.currentTimeMillis() to C++
 
Justin.SpahrSummers@gmail.com wrote:
> On Sep 28, 9:33 am, "Victor Bazarov" <v.Abaza...@comAcast.net> wrote:
>> tak wrote:
>>> 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.

>
> 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
--
Please remove capital 'A's when replying by e-mail
I do not respond to top-posted replies, please don't ask



Scott Gifford 09-28-2007 04:35 PM

Re: Java's System.currentTimeMillis() to C++
 
tak <takwong@katnik.com> writes:

[...]

> 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.

Justin.SpahrSummers@gmail.com 09-28-2007 07:32 PM

Re: Java's System.currentTimeMillis() to C++
 
On Sep 28, 11:09 am, "Victor Bazarov" <v.Abaza...@comAcast.net> wrote:
> Justin.SpahrSumm...@gmail.com wrote:
> > On Sep 28, 9:33 am, "Victor Bazarov" <v.Abaza...@comAcast.net> wrote:
> >> tak wrote:
> >>> 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.

>
> > 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.


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


James Kanze 09-28-2007 10:47 PM

Re: Java's System.currentTimeMillis() to C++
 
On Sep 28, 4:29 pm, tak <takw...@katnik.com> wrote:
> 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.

--
James Kanze (GABI Software) email:james.kanze@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



All times are GMT. The time now is 09:48 AM.

Powered by vBulletin®. Copyright ©2000 - 2014, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.