1

奇怪...谁能告诉我这里出了什么问题?这是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”。

4

3 回答 3

3

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

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

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

于 2012-12-05T01:22:19.023 回答
1

试试这个格式

format = "%m/%d/%Y %I:%M:%S %p"

要得到:

=> `"12/04/2012 02:52:58 PM"` 
于 2012-12-04T21:53:39.393 回答
1

Date 或 DateTime 提供strptime方法;时间提供了strftime方法。对?

于 2012-12-04T21:59:44.307 回答