[
https://issues.apache.org/jira/browse/DIRAPI-241?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14611875#comment-14611875
]
Emmanuel Lecharny commented on DIRAPI-241:
------------------------------------------
I have committed the replacement of the {{Math.round()}} method by
{{Math.floor}} : http://svn.apache.org/r1688811
I'm not pleased by this change : I do think we should use {{Math.round()}}, and
if we get 1000 ms as a result, then we should change it to 0, and propagate the
value to seconds, minutes, hours, days, months, year.
We could also avoid using Double and only use a long, which is likely to be
faster.
> new GeneralizedTime(String) fails for fraction close to one
> -----------------------------------------------------------
>
> Key: DIRAPI-241
> URL: https://issues.apache.org/jira/browse/DIRAPI-241
> Project: Directory Client API
> Issue Type: Bug
> Affects Versions: 1.0.0-M30
> Reporter: Max Fichtelmann
> Priority: Minor
>
> When parsing a time with a resolution of nanos (like generated by the
> openldap ppolicy overlay) it results in a Time that fails to be parsed by
> org.apache.directory.api.util.GeneralizedTime.GeneralizedTime(String)
> Test:
> {code:title=Test.java|borderStyle=solid}
> static DateFormat FORMAT = new SimpleDateFormat( "dd/MM/yyyy
> HH:mm:ss.SSSS z" );
>
> @Test
> public void fractionCloseToOne() throws ParseException
> {
> GeneralizedTime close = new GeneralizedTime( "20000101000000.9994Z" );
>
> assertThat( close.getDate(), is( equalTo( FORMAT.parse( "01/01/2000
> 00:00:00.999 GMT" ) ) ) );
>
> GeneralizedTime closer = new GeneralizedTime( "20000101000000.9995Z"
> );
>
> assertThat( closer.getDate(), is( equalTo( FORMAT.parse( "01/01/2000
> 00:00:01 GMT" ) ) ) );
> }
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)