[ 
https://issues.apache.org/jira/browse/AXIS2C-1049?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Dave Meier updated AXIS2C-1049:
-------------------------------

    Attachment: diff.txt

Hi Senaka,

I attached a diff file as date_time.c failed to compile.  The diff shows what I 
changed to make it compile.

Also, I have some other comments:

1.  The ".%d" part that comes after the seconds is optional, so you first must 
check if there is a "." in the string and then parse accordingly.  This is 
fractional seconds, not msec.  So it needs to be converted to a value between 0 
and 999 msec (e.g. ".6903043" is 690 msec).

2.  You could scan for either "+" or "-" by using a %c and scanning it into a 
character.  This would save having two sscanf lines where one handles "+" and 
one handles "-".  I think if you do this you can then have one sscanf for 
handling ".%d" and one that doesn't have the ".%d".  So you would have:  
"%d-%d-%dT%d:%d:%d.%d%c%d:%d" and  "%d-%d-%dT%d:%d:%d%c%d:%d" where the second 
one has no ".%d".

Thanks,

-Dave.

> Axis2/C does not handle timezone offsets or fractional seconds correctly
> ------------------------------------------------------------------------
>
>                 Key: AXIS2C-1049
>                 URL: https://issues.apache.org/jira/browse/AXIS2C-1049
>             Project: Axis2-C
>          Issue Type: Bug
>          Components: util
>    Affects Versions: Current (Nightly)
>         Environment: Windows XP
>            Reporter: Dave Meier
>            Assignee: Senaka Fernando
>            Priority: Blocker
>             Fix For: Current (Nightly)
>
>         Attachments: diff.txt
>
>
> See section 3.2.7.1 of the spec at http://www.w3.org/TR/xmlschema-2/
> I have a C# client sending a date/time string as 
> "2008-03-08T23:30:43.6915406-08:00" which is an acceptable way of describing 
> a time in the US/Pacific timezone.  It looks like the code in 
> util/src/date_time.c was recently changed, but even before it was not 
> handling this type of date/time string.
> First, it is treating the ".6915406" as milliseconds and giving me an error 
> because it's greater than 999.  This is supposed to be fractional seconds, 
> not msec.
> Second, it doesn't parse the "-08:00" at all.  It is using the following to 
> scan:
>   sscanf(time_str, "%d:%d:%d.%dZ", &hour, &min,  &sec, &msec);
> But the spec shows "'-'? yyyy '-' mm '-' dd 'T' hh ':' mm ':' ss ('.' s+)? 
> (zzzzzz)?" where the ".s+" part is the fractional seconds and "zzzzzz" can be 
> "Z" or "+02:00" or "-08:00", etc.

-- 
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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to