为什么这个在控制台中工作不在我的应用程序中购买?

时间:2016-09-23 19:48:48

标签: ruby-on-rails datetime bootstrap-datetimepicker strptime

我尝试用数千种不同的方式解决这个问题,看看几十个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")

1 个答案:

答案 0 :(得分:1)

这应该可以正常工作:

@image.start_at = Date.strptime(params[:image][:start_at], "%m-%d-%Y %I:%M %p")

说明:

  1. 您不必将其转换为字符串 - params中的任何内容都是字符串;
  2. 由于start_at类型为Date,您应该将Date对象传递给它,而不是DateTime个对象。
  3. 如果您的start_at IS 是日期时间类型(不是日期,正如您在评论中所说的那样),

    @image.start_at = DateTime.strptime(params[:image][:start_at], "%m-%d-%Y %I:%M %p")

    会奏效。