You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by "Amila Chinthaka Suriarachchi (JIRA)" <ji...@apache.org> on 2008/01/04 06:15:33 UTC

[jira] Commented: (AXIS2-3423) ConverterUtil.convertToDateTime is adding portion of fractions of a second to time as milliseconds during conversion

    [ https://issues.apache.org/jira/browse/AXIS2-3423?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12555801#action_12555801 ] 

Amila Chinthaka Suriarachchi commented on AXIS2-3423:
-----------------------------------------------------

lets say we have some thing like this
09:08:45.2347

this means 0.2347 seconds
which is equivalent to 234 ms 

what it does is first add first add three 0's (by * 1000) and 
then move the decimal point equivalent to the length of the original string.
this gives the 234.7 and the answer is 234 ms
but here it does not round off the last digit. we can do it by using a float value and 
using the Math.random to round off it.

can you give a sample value for the problem you are talking about? 


> ConverterUtil.convertToDateTime is adding portion of fractions of a second to time as milliseconds during conversion
> --------------------------------------------------------------------------------------------------------------------
>
>                 Key: AXIS2-3423
>                 URL: https://issues.apache.org/jira/browse/AXIS2-3423
>             Project: Axis 2.0 (Axis2)
>          Issue Type: Bug
>          Components: databinding
>    Affects Versions: 1.4, nightly
>         Environment: Java 1.5 
>            Reporter: Rob Decker
>
> In org.apache.axis2.databinding.utils.ConverterUtil method convertToDateTime lines 946 to 955 of the 20071231 nitely build is trying to round the fractions of a millisecond but is instead parsing out millionths of a second, stripping the thousands and adding the left over millionths of a second to time:
>             if (milliSecondPartLength != 3){
>                 // milisecond part represenst the fraction of the second so we have to
>                 // find the fraction and multiply it by 1000. So if milisecond part
>                 // has three digits nothing required
>                 miliSecond = miliSecond * 1000;
>                 for (int i = 0; i < milliSecondPartLength; i++) {
>                     miliSecond = miliSecond / 10;
>                 }
>             }
>             calendar.set(Calendar.MILLISECOND, miliSecond);  // <-- this adds millionths of a second as milliseconds
> The loop should be:
>     double ms = milliSecond * 1000;
>     for (int =0; i < milliSecondPartLength; i++) {
>         ms = ms /10;
>    }
>    miliSecond = (ms%1)*1000;

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: axis-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-dev-help@ws.apache.org