DateTime无法在Rails中将字符串转换为日期

时间:2019-03-17 01:12:56

标签: ruby-on-rails

我正在寻找一个转换为带datetimepcker的表单生成的参数:“ 03/17/2019 8:30 AM”。表格中的所有其他参数都会保存,时间/日期除外。我尝试了多种方法,但都失败了。

2.5.3 :010 > a
 => "03/17/2019 8:30 AM" 
2.5.3 :011 > DateTime.strptime(a, "%m/%d/%Y %I:%M:%S %P")
Traceback (most recent call last):
        2: from (irb):11
        1: from (irb):11:in `strptime'
ArgumentError (invalid date)

这应该是一个简单的问题,但对我来说似乎并不可行。有人知道如何将datetime参数保存在rails中吗?

表单中的字段如下:

<div class="input-group date" id="datetimepicker4" data-target-input="nearest">
<%= f.text_field(:start, value: f.object.start ? f.object.start.strftime('%B %d, %Y') : nil, class: "form-control datetimepicker-input", data: {target:"#datetimepicker4"}, placeholder: "#{t :From}") %>
<div class="input-group-append" data-target="#datetimepicker4" data-toggle="datetimepicker">
<div class="input-group-text"><span class="fas fa-calendar-alt"></span></div>
</div>
</div>

谢谢

2 个答案:

答案 0 :(得分:3)

问题是您在strptime通话中要求输入几秒钟,但您的时间却没有几秒钟。尝试以下方法:

a = "03/17/2019 8:30 AM"
DateTime.strptime(a, "%m/%d/%Y %I:%M %P")

或者增加几秒钟的时间。

答案 1 :(得分:1)

您的格式字符串中包含:%S,但是您要解析的字符串中没有秒。要么删除格式字符串的那一部分,要么找到某种方式使日期字符串中包含秒。

相关问题