2016-04-18 3 views
4

App utilise soap4r pour la consommation API/SOAPle format soap4r SOAPDateTime basé sur GMT

Mais SOAP :: SOAPTimeFormat revient 2015-11-15T16: 59: 521468,7999999999999545-04: 00

chkout.add('purchasedDt ', SOAP::SOAPDateTime.new(basket.purchase_Date)) 

aide strftime ('% Y-% m-% dT% H:% M:% S') donne le

suivant
chkout.add('purchasedDt ', SOAP::SOAPDateTime.new(basket.purchase_Date.strftime('%Y-%m-%dT%H:%M:%S'))) 

2015-11-15T16: 59: 52Z

Que faut-App est
15/11/2015 16:59:52 -0400 S'il vous plaît conseiller ... besoin du format aaaa-mm-jjThh: mm: ss -/+ gmt

-Fransis

Répondre

2

Un simple changement dans votre strftime et vous pouvez en savoir plus dans le doc pour Time#strftime

basket.purchase_Date.now.strftime('%Y-%m-%d %H:%M %z') 
=> "2016-04-26 22:48 -0400" 
+0

avec le format de date soapUI son encore .... 2015-11-15T16: 59: 52Z. – Fransis

2

on dirait que votre applicaton accepte le format ISO8601. Vous pouvez utiliser Time#xmlschema comme raccourci pour générer des chaînes compatibles ISO8601:

basket.purchase_Date.xmlschema 
#=> "2015-11-15T16:59:52-04:00" 

changer juste cette ligne dans votre exemple:

chkout.add('purchasedDt ', SOAP::SOAPDateTime.new(basket.purchase_Date.xmlschema)) 
+0

avec le format de date soapUI son encore .... 2015-11-15T16: 59: 52Z – Fransis

+1

De la [docs] (http://ruby-doc.org/stdlib-2.3.1/libdoc/time/rdoc/Time .html # method-i-xmlschema): * Si self est une heure UTC, Z est utilisé comme TZD. [+ -] hh: mm est utilisé autrement. * Il semble que votre horodatage est déjà UTC. Pouvez-vous s'il vous plaît appeler '.zone' sur votre horodatage? Cela renvoie le fuseau horaire de l'horodatage. Je voudrais comprendre le conflit entre le comportement et la partie «-04: 00» dans votre message. – spickermann

+0

Lorsque j'utilise .zone avec SOAPDatetime .... j'ai une erreur. – Fransis