【问题标题】:Ruby Datetime parse error with different format不同格式的Ruby Datetime解析错误
【发布时间】:2016-02-25 23:10:32
【问题描述】:

我想将字符串转换为不同格式“13:54 25/02/2016”的 DateTime 对象,有什么办法吗?

我尝试了不同的方法,但出现错误。我正在使用 ruby​​ 版本'2.1.2'

例子:

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

【问题讨论】:

    标签: ruby date parsing datetime


    【解决方案1】:

    DateTime.parse("13:54 25/02/2016") 正在返回 Thu, 25 Feb 2016 13:54:00 +0000 在我的 Rails 控制台中。不知道为什么你有一个参数错误。

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

    【讨论】:

    • DateTime.parse("13:54 25/02/2016") # ArgumentError: invalid date 仍然有错误。 DateTime.strptime("13:54 25/02/2016", '%H:%M %d/%m/%Y') 这给出了正确的日期时间对象。
    • @Madhusudhan 尝试更新您的 Rails 版本,我使用的是 2.2.3,它工作正常。很高兴我的回答有帮助:)
    【解决方案2】:

    我认为您可能需要指定格式,但默认情况下它应该也可以工作(我尝试使用 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 类被打开和改变了?

    【讨论】:

    • DateTime.parse("13:54 25/02/2016", "%H:%M %d/%m/%Y") # ArgumentError: invalid date For strptime date format is required , 解析也是强制的吗?
    • 你能检查一下Kernel.const_defined?("DateTime") 是否返回false 之前你做require date?不知何故,我有一种感觉,您正在使用DateTime 的非预期版本。
    • 返回真
    【解决方案3】:

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

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

    即使您知道您以默认格式提供字符串,最好将其显式化。

    【讨论】:

      猜你喜欢
      • 2012-05-05
      • 2017-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多