ruby-on-rails - ruby strptime 错误

标签 ruby-on-rails ruby

奇怪...谁能告诉我这里出了什么问题?这是 strptime 的错误吗?

1.9.3p194 :079 > format = "%m/%-d/%Y %-I:%M:%S %p"
 => "%m/%-d/%Y %-I:%M:%S %p" 
1.9.3p194 :080 > now = Time.now.strftime(format)
 => "12/4/2012 1:44:45 PM" 
1.9.3p194 :081 > Time.strptime(now, format)
ArgumentError: invalid strptime format - `%m/%-d/%Y %-I:%M:%S %p'
    from /Users/fedenusy/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/time.rb:283:in `strptime'
from (irb):81
from /Users/fedenusy/.rvm/gems/ruby-1.9.3-p194/gems/railties-3.2.9/lib/rails/commands/console.rb:47:in `start'
from /Users/fedenusy/.rvm/gems/ruby-1.9.3-p194/gems/railties-3.2.9/lib/rails/commands/console.rb:8:in `start'
from /Users/fedenusy/.rvm/gems/ruby-1.9.3-p194/gems/railties-3.2.9/lib/rails/commands.rb:41:in `<top (required)>'
from script/rails:6:in `require'
from script/rails:6:in `<main>'

编辑:澄清一下,我正在尝试使用这种特定格式的日期,例如“12/4/2012 1:44:45 PM”。

最佳答案

strptime 不支持用于抑制 strftime 中填充的减号 (-) 标志。

如果您跟踪来自 Rails 的 Date#strptime 或 Time#strptime 调用,您会发现您最终会进入 strptime 的 Ruby VM 源代码。 .您会看到在处理“-”字符的解析器中没有 case。您可以将其与 strftime 的实现进行比较,确实有这种情况。

因此,您不能使用您的格式字符串进行解析。您需要删除缺点才能使其有效。

关于ruby-on-rails - ruby strptime 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13712525/

相关文章:

ruby-on-rails - 尝试访问数据库时找不到 gem 'rails'

ruby-on-rails - 如何在没有 RVM 的情况下在 Ubuntu 上安装 Ruby 1.9.3?

ruby - 用映射替换数组元素

ruby - 如何从 Ruby 中的哈希中删除特定值

ruby-on-rails - Rails options_for_select 来自模型的数据加上附加数组

ruby-on-rails - 如何获得设计 session 超时回调?

ruby-on-rails - 告诉 Sidekiq 使用所有可用的 Heroku worker

ruby-on-rails - 使用设备未收到确认邮件

ruby-on-rails - 我应该如何在我的 ApplicationController 中使用 Draper?

ruby-on-rails - 我可以在 Ruby 1.9 上设置默认字符串编码吗?