Ruby日期时间解析错误不同的格式

问题描述:

我想将字符串转换为不同格式的“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 

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

我想你可能需要指定的格式,但它应该是默认的工作(我试图与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

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

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

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