|
Boost Users : |
Subject: Re: [Boost-users] convert separate year, month, day, hour, minute, secs, ms to milliseconds since epoch
From: Gavin Lambert (boost_at_[hidden])
Date: 2019-03-04 22:17:59
On 4/03/2019 09:45, Victor Yankee wrote:
> I am using C++14 and boost 1.64.0 (could move to newest boost), and need
> to convert date and time pieces to a single value for milliseconds since
> the epoch. This is what I have:
>
> int64_t msSinceEpoch(int year,int month,int day,int hour,int minute,int
> second,int ms)
> Â Â Â Â Â Â Â Â Â Â Â {
> Â Â Â Â Â Â Â Â Â Â Â struct std::tm t;
>            t.tm_sec   = second;
>            t.tm_min   = minute;
>            t.tm_hour  = hour;
>            t.tm_mday  = day;
>            t.tm_mon   = month-1;
>            t.tm_year  = year-1900;
>            t.tm_isdst = 0;
> Â Â Â Â Â Â Â Â Â Â Â return (1000* timegm(&t))+ms; // is timegm cross-platform?
> Â Â Â Â Â Â Â Â Â Â Â }
timegm is not cross platform. mktime is, but uses local time instead of
UTC.
> Is there a better way? Could not figure out how to use boost::chrono :(
> Something else?
Boost.Chrono is for time intervals, not dates.
Boost.DateTime, however, has the ptime class which will solve this for you.
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