|
Boost Users : |
Subject: Re: [Boost-users] [chrono] Initializing system_clock from microseconds
From: Vicente J. Botet Escriba (vicente.botet_at_[hidden])
Date: 2013-06-11 13:02:46
Le 11/06/13 14:22, Kelly, Dan a écrit :
>
> I have been having some difficulty initializing a
> chrono::system_clock::time_point object. Specifically,
>
> I am trying to load a time stamp from a .pcap file using libpcap. I
> have a structure, pcap_pkthdr,
>
> which contains two fields:
>
> structtimeval {
>
> long tv_sec; /* seconds */
>
> long tv_usec; /* and microseconds */
>
> };
>
> structpcap_pkthdr {
>
> struct timeval ts; /* time stamp */
>
> bpf_u_int32 caplen; /* length of portion present */
>
> bpf_u_int32 len; /* length this packet (off wire) */
>
> };
>
> Where tv_sec and tv_usec are seconds and microseconds respectively
> relative to an epoch
>
> of Jan 1, 1970. I can use system_clock::from_time_t() to initialize
> the time_point to an 64-bit integer
>
> seconds (std:time_t). The question is, how do I add the microseconds
> to this value? My latest attempt
>
> is:
>
> voidmy_class::calculate_packet_statistics( const struct pcap_pkthdr
> *header ) {
>
> frame_interval_.intervalTimeStamp_ = system_clock::from_time_t(
> static_cast<time_t>( header->ts.tv_sec ) );
>
> frame_interval_.intervalTimeStamp_ += microseconds( header->ts.tv_usec
> ); // This is the problematic line
>
> ...
>
> }
>
> However, this appears to simply add tv_usec to the internal
> representation of the time_point. The internal
>
> representation appears to be in 100ns ticks with an epoch other than
> Jan 1, 1970. This is on a windows x64
>
> build but the same code will have to work on Linux as well.
>
> As a side note, I later do some date calculations using
> system_clock::to_time_t. I lose my fractional seconds here
>
> But since I am only working with dates, this is not a problem.
>
>
Hi, there were some issues
(https://svn.boost.org/trac/boost/ticket/7525) with windows system_clock
epoch that should be fixed with
https://svn.boost.org/trac/boost/changeset/82563. This was released on
Boost 1.52.
Which version are you using?
Best,
Vicente
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net