2010-11-11 74 views
7

我在Rails的它輸出這樣一個DateTime對象調用時:如何將Rails DateTime對象轉換爲XML字符串?

ruby-1.8.7-p302 > Time.now 
=> Wed Nov 10 16:46:51 -0800 2010 

如何轉換DateObject返回的XML DateTime類型的字符串是這樣的:

ruby-1.8.7-p302 > Time.now.convert_to_xml 
=> 2010-11-10T16:46:51-08:00 

回答

25

時間爲XML格式:

Time.now.xmlschema # implemented by Rails, not stock ruby 
Time.now.strftime '%Y-%m-%dT%H:%M:%S%z' 

http://corelib.rubyonrails.org/classes/Time.html#M000281

爲了解析(紅寶石1.9及以後):

t = Time.now.xmlschema(str) 

http://ruby-doc.org/core-1.9/classes/Time.html#M000329

+0

看起來像Time.now.xmlschema也適用於Ruby 1.8.7。謝謝! – Chanpory 2010-11-11 01:02:23

+0

@GeekActive,不要忘記將這個答案標記爲** Accepted **。 =) – John 2010-11-11 01:07:43

+0

看起來'Time.xmlschema'被Rails實現爲'Time'類的擴展。這不是股票Ruby。我更新了答案。 – 2010-11-11 01:35:00

0

使用strftime方法

Time.now.strftime("your format string") 
+0

to_s不轉換爲XML。我只是得到了與'Time.now'相同的迴應,但是引用了'「Wed Nov 10 16:46:51 -0800 2010」' – Chanpory 2010-11-11 00:53:47

+0

是的,我跳過槍,因爲我讀了字符串。 – rwilliams 2010-11-11 00:54:25

+0

我在標題中的錯誤,只是編輯它 – Chanpory 2010-11-11 00:55:36

5

嘗試Time.now.iso8601

+0

這也是簡潔的答案! – Chanpory 2010-11-11 02:08:46

+0

「xs:dateTime,內置於W3C XML Schema數據類型 規範[Schema2]中,且必須以UTC格式表示,且不含時區組件。」 – Chloe 2013-05-10 22:50:48

1

這裏有一個純Ruby的方式:

Time.now.strftime("%Y-%m-%dT%H:%M:%S%z") 

你可以得到有關的各種strftime的選項的詳細信息:

ri Time.strftime 
相關問題