2011-12-20 97 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