<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-2022-jp">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="#0563C1" vlink="#954F72">
<div class="WordSection1">
<p class="MsoNormal">John,<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I realize you are on vacation, but when you come back$B!D(B<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">As part of the ESTRACK/DSN schedule exchange work ongoing, a question about time representation has arisen. I have taken a look and my conclusion is that the schema that we have for Time code B does not quite match the Time code B definition
 in the book. Certainly a more "relaxed" definition with regard to sub seconds is in order for reporting things like schedules which often (although perhaps not exclusively) don't need anything stated below a second resolution.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Here is what the CCSDS recommendation on Time codes says about T.C. B says about it:<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><span style="font-family:"Times New Roman",serif">$B!H!D(B.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Times New Roman",serif">3.5.1.2 ASCII TIME CODE B, Year/Day of Year Calendar Variation:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Times New Roman",serif">The format for ASCII Time Code B is as follows:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Times New Roman",serif">YYYY-DDDThh:mm:ss.d$B"*(BdZ<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Times New Roman",serif"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Times New Roman",serif">where each character is an ASCII character using one octet with the following meanings:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Times New Roman",serif">YYYY = Year in four-character subfield with values 0001-9999<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Times New Roman",serif">DDD = Day of year in three-character subfield with values 001-365 or -366<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Times New Roman",serif">T = Calendar-Time separator<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Times New Roman",serif">hh = Hour in two-character subfield with values 00-23<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Times New Roman",serif">mm = Minute in two-character subfield with values 00-59<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Times New Roman",serif">ss = Second in two-character subfield with values 00-59<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Times New Roman",serif">(-58 or -60 during leap seconds)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Times New Roman",serif">d$B"*(Bd = Decimal fraction of second in one- to n-character subfield<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Times New Roman",serif">where each d has values 0-9<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Times New Roman",serif">Z = time code terminator (optional)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Times New Roman",serif"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Times New Roman",serif">The hyphen (-), colon (:), letter $B!F(B T$B!G(B and period (.) are used as specific subfield separators,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Times New Roman",serif">and that all subfields must include leading zeros.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Times New Roman",serif"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Times New Roman",serif">As many $B!F(Bd$B!G(B characters to the right of the period as required may be used to obtain the<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Times New Roman",serif">required precision.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Times New Roman",serif"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Times New Roman",serif">An optional terminator consisting of the ASCII character $B!F(BZ$B!G(B may be placed at the end of the<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Times New Roman",serif">time code.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Times New Roman",serif">EXAMPLE: 1988-018T17:20:43.123456Z<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Times New Roman",serif">$B!D(B.$B!I(B<o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">And here is the key line in the XML schema that defines the pattern<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><xsd:pattern value="\d{4}-\d{3}T\d{2}:\d{2}:\d{2}\.\d+Z?"/><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Note that the CCSDS book says $B!H(B..As many $B!F(Bd$B!G(B characters to the right of the period as required may be used to obtain the<o:p></o:p></p>
<p class="MsoNormal">required precision$B!I(B.  I take this to mean that $B!H(Bas many$B!I(B could in fact be 0 (zero).<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Given that, I think the XML schema line should read:<o:p></o:p></p>
<p class="MsoNormal"><xsd:pattern value="\d{4}-\d{3}T\d{2}:\d{2}:\d{2}\.\d*Z?"/><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">With this definition which I think is consistent with the definition of Time code B implementations are not required to state at least a 10<sup>th</sup> of a second for timestamps.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I propose that we update the schema accordingly which I think makes the schema more useful to our implementing organizations, consistent with time code B definition, while still allowing for the subsecond expression if needed.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Best regards,<o:p></o:p></p>
<p class="MsoNormal">-Erik<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</body>
</html>