2016-02-25 75 views
1

我想將字符串轉換爲不同格式的「13:54 25/02/2016」的日期時間對象,有沒有辦法做到這一點?Ruby日期時間解析錯誤不同的格式

我試過不同的方法,但得到錯誤。我使用的紅寶石版本「2.1.2」

例子:

DateTime.parse("13:54 25/02/2016") # ArgumentError: invalid date 
DateTime.strptime("13:54 25/02/2016") ArgumentError: invalid date 

回答

0

DateTime.parse("13:54 25/02/2016")將返回 Thu, 25 Feb 2016 13:54:00 +0000在我的軌道console.Not知道爲什麼你有一個參數錯誤。

如果你想使用strptime,你需要做的DateTime.strptime("13:54 25/02/2016", '%H:%M %d/%m/%Y')#=> Thu, 25 Feb 2016 13:54:00 +0000

+0

DateTime.parse(「13:54 25/02/2016」)#ArgumentError:無效的日期仍然有錯誤。 DateTime.strptime(「13:54 25/02/2016」,'%H:%M%d /%m /%Y')這是給予正確的日期時間對象。 – Madhusudhan

+0

@Madhusudhan嘗試更新您的rails版本,我使用的是2.2.3,它工作正常。很高興我的答案幫助:) – Jefferson

0

我想你可能需要指定的格式,但它應該是默認的工作(我試圖與2.2.2)爲好。例如:

2.2.2 :016 > DateTime.parse("13:54 25/02/2016", "%H:%M %d/%m/%Y") 
=> #<DateTime: 2016-02-25T13:54:00+00:00 ((2457444j,50040s,0n),+0s,2299161j)> 

您確定您使用的是正確的日期:require date?也許DateTime類是打開並更改的?

+0

DateTime.parse(「13:54 25/02/2016」,「%H:%M%d /%m /%Y」)#ArgumentError:無效日期 對於strptime日期格式是強制性的,解析也是強制性的? – Madhusudhan

+0

您可以檢查'Kernel.const_defined?(「DateTime」)'是否在'require date''之前返回'false'?我不知何故感覺你正在使用'DateTime'的意外版本。 –

+0

它返回true – Madhusudhan

0

strptime需要你提供的日期字符串格式:

strptime([string='-4712-01-01T00:00:00+00:00'[, format='%FT%T%z'[ ,start=ITALY]]]) 

即使你知道你提供的默認格式字符串,它是一個很好的做法,以明確它。