2010-11-11 71 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 
相关问题