Hi Jeff,
The specification we got is a bit vague. Basically I am getting data packets from a server which puts a time stamp in the data which is defined as “microseconds in the current year”. From that, I have to create a time-stamp in a different format which is CCSDS day segmented time (epoch is 1.1.1958, 16-bit days, 32-bit milliseconds of the year and 16-bit microseconds of the millisecond). I can assume that both systems are synchronized via ntp, so I guess it is UTC. I am trying to get more details on that.
What I then need to do is to write a function that computes
convert(microseconds) -> (days since 1.1.1958, milliseconds, microseconds)
My idea was to:
1. Decide which is the current year. When the two systems disagree, the data server takes precedence because it provides a more accurate clock internally.
2. From this year, compute the number of days from 1.1.1958 to 1.1. This could something like
d = ptime(date( /* 1.1. of current year */) ) + microseconds(x)
3. Compute the number of days in the current year from the number of microseconds.
days = d.date().day_of_year()
4. Compute the milliseconds/microseconds in the current day from d.time_of_day().
The question about leap seconds came up when converting the microseconds in the current year to the day. I guess that the original microseconds value contains leap seconds, but I need to get a definite statement for this.
However, I am currently not implementing the conversion, but proposing how to do it (we need to write detailed design documents first…). I wanted to use Boost.DateTime and include a statement that when I convert the number of microseconds to days, leap seconds are taken into account.
Best wishes,
Jens
--
Dr. Jens Auer | CGI | Software Engineer
CGI Deutschland Ltd. & Co. KG
Rheinstraße 95 | 64295 Darmstadt | Germany
T: +49 6151 36860 154
jens.auer@cgi.commailto:jens.auer@cgi.com
Unsere Pflichtangaben gemäß § 35a GmbHG / §§ 161, 125a HGB finden Sie unter de.cgi.com/pflichtangabenhttp://de.cgi.com/pflichtangaben.
CONFIDENTIALITY NOTICE: Proprietary/Confidential information belonging to CGI Group Inc. and its affiliates may be contained in this message. If you are not a recipient indicated or intended in this message (or responsible for delivery of this message to such person), or you think for any reason that this message may have been addressed to you in error, you may not use or copy or deliver this message to anyone else. In such case, you should destroy this message and are asked to notify the sender by reply e-mail.
From: Boost-users [mailto:boost-users-bounces@lists.boost.org] On Behalf Of Jeff Garland
Sent: 15 July 2015 01:09
To: boost-users@lists.boost.org
Subject: Re: [Boost-users] Boost.DateTime and leap year/leap seconds
Hi Jens -
Leap second support never got added to the library -- most applications can ignore them. In principle, of course, you can use the library to help you do the calculations. Basically they are like leap years except that they are irregular -- so you have to use a collection to perform the adjustment instead of an algorithm.
Little confused about the use case though -- are the microseconds you receive including the leap seconds or not including them? Basically which way are you adjusting?
Jeff
On Fri, Jul 10, 2015 at 5:10 AM, Auer, Jens