我尝试用数千种不同的方式解决这个问题,看看几十个StackOverflow帖子以及处理DateTime,bootstrap datetimepicker,格式化,strptime,strftime等等的外部教程,没有解决方案。我现在有一个基本问题可以帮助我继续前进。
为什么这在我的控制台中有效:
DateTime.strptime("09-29-2016 03:29 PM", "%m-%d-%Y %I:%M %p")
=> Thu, 29 Sep 2016 15:29:00 +0000
但是我的应用程序失败了:
@image.start_at = DateTime.strptime(params[:start_at].to_s, "%m-%d-%Y %I:%M %p")
=>ArgumentError in ImagesController#create
invalid date
我的start_at参数来自:
..."start_at"=>"09-29-2016 03:29 PM"},...
此外,这在我的应用中无效:
@image.start_at = DateTime.strptime(@image.start_at.to_s, "%m-%d-%Y %I:%M %p")
答案 0 :(得分:1)
这应该可以正常工作:
@image.start_at = Date.strptime(params[:image][:start_at], "%m-%d-%Y %I:%M %p")
说明:
start_at
类型为Date
,您应该将Date
对象传递给它,而不是DateTime
个对象。如果您的start_at
IS 是日期时间类型(不是日期,正如您在评论中所说的那样),
@image.start_at = DateTime.strptime(params[:image][:start_at], "%m-%d-%Y %I:%M %p")
会奏效。