axis-c-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jean ANDRE <jan...@cmtek.com>
Subject Re: float type and date time format
Date Thu, 09 Dec 2004 16:13:31 GMT
Hello,

Finally I've downloaded the source code to see that the "Z" at the end 
of date-time string of the soap request inside Axis was hard-coded. This 
behavior is clearly not the same under java and dot-net application. 
Source file is  AxisTime.cpp into src/common folder. What's the 
specification for date-time and why  we have such difference ?  Does the 
1.4 solve the problem ?

AxisString & AxisTime::serialize(struct tm tValue, XSDTYPE nType)
{
    /*formats the output date in the format CCYY-MM-DDThh:mm:ssZ */
    switch (nType)
    {
        case XSD_DATETIME:
            strftime (buf1, TIMEBUFFSIZE, "%Y-%m-%dT%H:%M:%SZ", &tValue);
            strXSDDate = buf1;
            //AxisUtils::convert(strXSDDate, buf1);
            break;
        case XSD_DATE:
            strftime (buf1, TIMEBUFFSIZE, "%Y-%m-%dZ", &tValue);
            strXSDDate = buf1;
            //AxisUtils::convert(strXSDDate, buf1);
            break;
        case XSD_TIME:
            strftime (buf1, TIMEBUFFSIZE, "%H:%M:%SZ", &tValue);
            strXSDDate = buf1;
            //AxisUtils::convert(strXSDDate, buf1);
            break;
        default:;
    }
    return strXSDDate;
}




Jean ANDRE wrote:

> Bonjour everybody!
>
> Well, I have a strange behavior with floating number and date time 
> format.
>
> 1 ) With float number, 77.99 becomes 77.989998 output string under 
> Axis. Why I lost some digits ??????!!!
>
> 2) With datetime format , in c++ test code, I just  moved some fields 
> to another one of the same structure and I get the following output 
> string: with Axis
>    <txnDate>*2004-12-09T19:54:32Z*</txnDate>
>  
> I supposed that Z is for TimeZone ?  But how to construct a time to 
> obtain such string ?
>
> With dot-net client application and a java application I got the 
> following string:
> <txnDate>2004-12-08T00:00:00.0000000-05:00</txnDate>
>
> Thanks a lot for your answers. Take care!
>
> Jean .A - Canada
>
>
> In c++ test code, I put the following code according to the WSDL.
>
> C++ Test code under Microsoft  Visual C++
> ==============================
> class TxnAmount
> {
> public:
>    float amount;
>    xsd__string currency;
>    TxnAmount();
>    ~TxnAmount();
> };
>
>    xsd__dateTime txnDate;
>    tm* curTime;
>    time_t timer;
>
>
>    amount.amount = 77.99;                // paymentForm.amount
>    amount.currency = "USD";            // paymentForm.currency
>
>
>    memset(&txnDate, 0x00, sizeof(xsd__dateTime));
>    timer = time(NULL);
>    curTime = localtime( &timer );
>    txnDate.tm_isdst    = curTime->tm_isdst;
>    txnDate.tm_hour        = curTime->tm_hour;
>    txnDate.tm_min        = curTime->tm_min;
>    txnDate.tm_sec        = curTime->tm_sec;
>    txnDate.tm_wday        = curTime->tm_wday;
>    txnDate.tm_yday        = curTime->tm_yday;
>    txnDate.tm_mday        = curTime->tm_mday;             // 
> paymentForm.txnDateD - day of the month - [1,31]
>    txnDate.tm_mon        = curTime->tm_mon;                // 
> paymentForm.txnDateM - months since January - [0,11]
>    txnDate.tm_year        = curTime->tm_year;                // 
> paymentForm.txnDateY - years since 1900
>
> Fragment of the WDSL:
> ==================
>      <xs:element name="txnDate" type="xs:dateTime" minOccurs="0">
>      </xs:element>
>      <xs:complexType name="TxnAmount">
>        <xs:sequence>
>          <xs:element name="amount">
>            <xs:simpleType>
>              <xs:restriction base="xs:float">
>                <xs:minInclusive value="0.00"/>
>                <xs:maxInclusive value="9999999999.99"/>
>              </xs:restriction>
>            </xs:simpleType>
>          </xs:element>
>          <xs:element name="currency" minOccurs="0">
>            <xs:simpleType>
>              <xs:restriction base="xs:string">
>                <xs:enumeration value="USD"/>
>                <xs:enumeration value="CAD"/>
>              </xs:restriction>
>            </xs:simpleType>
>          </xs:element>
>        </xs:sequence>
>      </xs:complexType>
>
>
> Fragment of the string sent by AXIS ??  Look the field amount !!!!
> =============================================
> <ns1:txnRequest>
> <orderTotal>
> <amount>77.989998</amount>
> <currency>USD</currency>
> </orderTotal>
> <billTo>
>
> <txnDate>*2004-12-09T19:54:32Z*</txnDate>
>
>


Mime
View raw message