DateTime.strptime 无法解析日期字符串
DateTime.strptime can't parse date string
我不明白为什么以下 Ruby 2.4 代码会失败:
irb(main):006:0> require 'date'
=> false
irb(main):007:0> fmt = "%-m/%-d/%Y %-l:%M:%S %p"
=> "%-m/%-d/%Y %-l:%M:%S %p"
irb(main):008:0> DateTime.now.strftime(fmt)
=> "1/30/2018 7:42:44 AM"
irb(main):009:0> DateTime.strptime("1/30/2018 7:42:44 AM", fmt)
ArgumentError: invalid date
from (irb):9:in `strptime'
from (irb):9
from /usr/local/bin/irb:11:in `<main>'
irb(main):010:0>
当我格式化日期时,日期时间格式有效,但当我尝试解析该格式的日期字符串时,相同的格式字符串失败。
这是因为 strptime
不支持您正在使用的格式中的标志,请查看 http://ruby-doc.org/stdlib-2.4.2/libdoc/date/rdoc/DateTime.html#method-c-strptime
错误是因为您提供的格式 fmt
与您提供的 DateTime
字符串不匹配。
更改格式
fmt = "%-m/%-d/%Y %-l:%M:%S %p"
进入
fmt = "%m/%d/%Y %l:%M:%S %p"
希望对您有所帮助。
我不明白为什么以下 Ruby 2.4 代码会失败:
irb(main):006:0> require 'date'
=> false
irb(main):007:0> fmt = "%-m/%-d/%Y %-l:%M:%S %p"
=> "%-m/%-d/%Y %-l:%M:%S %p"
irb(main):008:0> DateTime.now.strftime(fmt)
=> "1/30/2018 7:42:44 AM"
irb(main):009:0> DateTime.strptime("1/30/2018 7:42:44 AM", fmt)
ArgumentError: invalid date
from (irb):9:in `strptime'
from (irb):9
from /usr/local/bin/irb:11:in `<main>'
irb(main):010:0>
当我格式化日期时,日期时间格式有效,但当我尝试解析该格式的日期字符串时,相同的格式字符串失败。
这是因为 strptime
不支持您正在使用的格式中的标志,请查看 http://ruby-doc.org/stdlib-2.4.2/libdoc/date/rdoc/DateTime.html#method-c-strptime
错误是因为您提供的格式 fmt
与您提供的 DateTime
字符串不匹配。
更改格式
fmt = "%-m/%-d/%Y %-l:%M:%S %p"
进入
fmt = "%m/%d/%Y %l:%M:%S %p"
希望对您有所帮助。