我正在寻找一个转换为带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>
谢谢
答案 0 :(得分:3)
问题是您在strptime
通话中要求输入几秒钟,但您的时间却没有几秒钟。尝试以下方法:
a = "03/17/2019 8:30 AM"
DateTime.strptime(a, "%m/%d/%Y %I:%M %P")
或者增加几秒钟的时间。
答案 1 :(得分:1)
您的格式字符串中包含:%S
,但是您要解析的字符串中没有秒。要么删除格式字符串的那一部分,要么找到某种方式使日期字符串中包含秒。