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

问题描述 投票:1回答:2

我希望通过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)

这应该是一个简单的问题,但似乎并不适合我。有人知道如何在rails中保存datetime params吗?

表格中的字段如下:

<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>

谢谢

ruby-on-rails
2个回答
3
投票

问题是你在strptime电话中要求秒,但你的时间没有秒。试试这个:

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

或者为你的时间增加几秒钟。


1
投票

您的格式字符串中包含:%S,但您尝试解析的字符串中没有秒数。删除格式字符串的那一部分或找到日期字符串的某种方式在其中有秒。

© www.soinside.com 2019 - 2024. All rights reserved.