2011-12-20 102 views
0

如何获取格式化日期(如07/11/1990)并将它们转换为19900711?正则表达式和一些替代也许?解析Ruby中的日期

+0

可能重复http://stackoverflow.com/questions/6214144/ruby-convert-string-to-date – Hauleth 2011-12-20 20:29:58

+0

可能重复的[Ruby字符串日期转换](http://stackoverflow.com/questions/3599239/ ruby-string-to-date-conversion) – 2011-12-20 22:47:41

回答

5
require 'date' 

DateTime.strptime('07/11/1990', '%m/%d/%Y').strftime('%Y%m%d') 

适合我。

+0

这也适用,这个'日期'方法和上面的'时间'方法有什么大的区别? – 585connor 2011-12-20 20:47:56

+0

strptime有更多的控制我猜。例如 > Time.parse( '07111990') 失败,但 > DateTime.strptime( '07111990', '%M%d%Y') 仍然有效。但只要Time.parse有效,这可能是更简洁的编码方式。 – barley 2011-12-20 20:54:45

+0

@ 585connor:'strptime'方法可以让你指定日期格式,并且在使用各种日期格式的情况下,这可能比猜测更好。 OTOH,我使用[ISO 8601](http://en.wikipedia.org/wiki/ISO_8601) – 2011-12-20 21:22:58

0

您可以使用更有效的方式,如dateVar.gsub("/","")。 Ofcourse更换dateVar为在那里你会存储在日期变量

+1

该OP不仅仅是删除'/',它们也是对数字进行重新排序 – 2011-12-20 20:35:18

4

Time类是你的朋友:

1.9.2p290 :002 > puts Time.parse('07/11/1990').strftime("%Y%d%m") 
--> 19900711 

您可能需要require "time"这个工作,虽然。有关输出格式的更多信息,请参阅字符串格式化时间。

+0

谢谢,这似乎工作得很好。 – 585connor 2011-12-20 20:35:58

+0

我认为只适用于最新版本的ruby,不是吗? – rendon 2011-12-20 20:36:19

+0

时间已经出现在我触及的每个红宝石版本中,可追溯到1.8.5 – Eugene 2011-12-20 20:37:42