2016-04-18 7 views
4

App nutzt SOAP4r für das Konsumieren von API/SOAPSOAP4R SOAPDateTime Format auf GMT basiert

Aber SOAP :: SOAPTimeFormat Rückkehr ist 2015-11-15T16: 59: 521468,7999999999999545-04: 00

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

Verwendung strftime ('% Y-% m-% dT% H:% M:% S') ist, welcher die folgenden

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

2015-11-15T16: 59: 52Z

Was App braucht, ist
2015.11.15 16.59.52 -0400 Bitte geben Sie ... müssen das Format in yyyy-mm-ddThh: mm: ss -/+ gmt

-Fransis

Antwort

2

Eine einfache Änderung in Ihrer strftime und Sie können Time#strftime

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

mit soapUI Datumsformat sein noch .... 2015-11-15T16: 59: 52Z. – Fransis

2

für mehr in der doc herauszufinden, Scheint, wie Ihr applicaton das ISO8601-Format akzeptiert. Sie können als Verknüpfung verwenden Time#xmlschema ISO8601 kompatible Zeichenfolgen zu erzeugen:

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

Gerade diese Zeile in Ihrem Beispiel ändern:

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

mit soapUI Datumsformat ist es immer noch .... 2015-11-15T16: 59: 52Z – Fransis

+1

Aus der [docs] (http://ruby-doc.org/stdlib-2.3.1/libdoc/time/rdoc/Time .html # method-i-xmlschema): * Wenn self eine UTC-Zeit ist, wird Z als TZD verwendet. [+ -] hh: mm wird sonst verwendet. * Ihr Zeitstempel scheint bereits UTC zu sein. Kannst du '.zone' auf deinem Zeitstempel anrufen? Dies gibt die Zeitzone des Zeitstempels zurück. Ich würde gerne den Konflikt zwischen dem Verhalten und dem '-04: 00' Teil in deinem Beitrag verstehen. – spickermann

+0

Wenn ich .zone mit SOAPDatetime benutze .... habe einen Fehler bekommen. – Fransis