<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
Hi,<br>
<br>
The seconds and nano-seconds are computed separately. <br>
The representation of Instant holds seconds and nanoseconds
separately.<br>
<br>
The computation is performed on the nano-seconds of the Instant and
truncated to milliseconds.<br>
The value of 0.000999 becomes 0 when truncated to MILLIS.<br>
<br>
Regards, Roger<br>
<br>
<div class="moz-cite-prefix">On 5/3/23 12:54 PM, SHARPE, Stuart
(Commercial & Institutional CDIO) wrote:<br>
</div>
<blockquote type="cite" cite="mid:LO2P265MB337698E3B54595B9627229B28A6C9@LO2P265MB3376.GBRP265.PROD.OUTLOOK.COM">
<meta name="Generator" content="Microsoft Word 15 (filtered
medium)">
<style>@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;}p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0cm;
font-size:10.0pt;
font-family:"Arial",sans-serif;
mso-fareast-language:EN-US;}p.MsoPlainText, li.MsoPlainText, div.MsoPlainText
{mso-style-priority:99;
mso-style-link:"Plain Text Char";
margin:0cm;
font-size:11.0pt;
font-family:"Calibri",sans-serif;}span.EmailStyle23
{mso-style-type:personal-compose;
font-family:"Arial",sans-serif;
color:windowtext;}span.PlainTextChar
{mso-style-name:"Plain Text Char";
mso-style-priority:99;
mso-style-link:"Plain Text";
font-family:"Calibri",sans-serif;
mso-fareast-language:EN-GB;}.MsoChpDefault
{mso-style-type:export-only;
font-family:"Arial",sans-serif;
mso-fareast-language:EN-US;}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]-->
<div class="WordSection1">
<p class="MsoPlainText">Hello,<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">I believe I have discovered a bug in
java.time. I've searched Jira and couldn't find any existing
similar issue.
<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">Consider the following code:<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText"> var t1 =
Instant.parse("2023-05-03T10:00:00.000999Z");<o:p></o:p></p>
<p class="MsoPlainText"> var t2 =
Instant.parse("2023-05-03T10:00:01.000Z");<o:p></o:p></p>
<p class="MsoPlainText"> var t3 =
Instant.parse("2023-05-03T10:00:01.001Z");<o:p></o:p></p>
<p class="MsoPlainText"> <o:p></o:p></p>
<p class="MsoPlainText"> System.out.println(MILLIS.between(t1,
t2));<o:p></o:p></p>
<p class="MsoPlainText">
System.out.println(MILLIS.between(t1, t3));<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">This prints:<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText"> 1000<o:p></o:p></p>
<p class="MsoPlainText"> 1000<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">Given that t3 is exactly one millisecond
later than t2, it does not seem reasonable that they can both
be 1000 milliseconds later than t1.<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">The JavaDoc for between() states "The
calculation returns a whole number, representing the number of
complete units between the two temporals."<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">Assuming I have understood this
correctly, I think MILLIS.between(t1, t3) is correct but
MILLIS.between(t1, t2) should return 999.<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">Regards<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">Stuart Sharpe<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div><br>
<div>
<div>
<div>
<div>
<div>
<div>This communication and any attachments are
confidential and intended solely for the addressee.
If you are not the intended recipient please advise
us immediately and delete it. Unless specifically
stated in the message or otherwise indicated, you
may not duplicate, redistribute or forward this
message and any attachments are not intended for
distribution to, or use by any person or entity in
any jurisdiction or country where such distribution
or use would be contrary to local law or regulation.
NatWest Markets Plc, NatWest Markets N.V., NatWest
Markets Securities Japan Limited and/or NatWest
Markets Securities Inc. (collectively "NatWest
Markets") accepts no responsibility for any changes
made to this message after it was sent.
<div>This communication, where prepared by the sales
and trading desk or desk strategists, may be
marketing material, desk strategy and/or trader
commentary. It is not a product of the research
department. This material may constitute an
invitation to consider entering into a derivatives
transaction under U.S. CFTC Regulations sections
1.71 and 23.605, where applicable, but is not a
binding offer to buy/sell any financial
instrument. The views of the author may differ
from others at NatWest Markets.
<div>Unless otherwise specifically indicated, the
contents of this communication and its
attachments are for information purposes only
and should not be regarded as an offer or
solicitation to buy or sell a product or
service, confirmation of any transaction, a
valuation, indicative price or an official
statement. Trading desks may have a position or
interest that is inconsistent with any views
expressed in this message. In evaluating the
information contained in this message, you
should know that it could have been previously
provided to other clients and/or internal
NatWest Markets personnel, who could have
already acted on it.
<div>NatWest Markets cannot provide absolute
assurances that all electronic communications
(sent or received) are secure, error free, not
corrupted, incomplete or virus free and/or
that they will not be lost, mis-delivered,
destroyed, delayed or intercepted/decrypted by
others. Therefore NatWest Markets disclaims
all liability with regards to electronic
communications (and the contents therein) if
they are corrupted, lost destroyed, delayed,
incomplete, mis-delivered, intercepted,
decrypted or otherwise misappropriated by
others.
<div>Any electronic communication that is
conducted within or through NatWest Markets
systems will be subject to being archived,
monitored and produced to regulators and in
litigation in accordance with NatWest
Markets’ policy and local laws, rules and
regulations. Unless expressly prohibited by
local law, electronic communications may be
archived in countries other than the country
in which you are located, and may be treated
in accordance with the laws and regulations
of the country of each individual included
in the entire chain.
<div>Copyright © NatWest Markets Plc. All
rights reserved. See
<a class="moz-txt-link-freetext" href="https://www.nwm.com/disclaimer">https://www.nwm.com/disclaimer</a> for further
risk disclosure (the agency arrangements
referred to in the further risk disclosure
between NatWest Markets Plc and NatWest
Markets N.V. are not applicable to
branches of NatWest Markets N.V.).
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
<br>
</body>
</html>