为什么这适用于控制台购买而不适用于我的应用程序?
Why does this work in console buy not in my app?
我试图以一千种不同的方式解决这个问题,查看了数十篇 Whosebug 帖子以及处理 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")
这应该可以正常工作:
@image.start_at = Date.strptime(params[:image][:start_at], "%m-%d-%Y %I:%M %p")
解释:
- 您不必将其转换为字符串 - params 中的任何内容都是字符串;
- 由于
start_at
的类型是 Date
,您应该将 Date
对象传递给它,而不是 DateTime
对象。
如果您的start_at
是日期时间类型(不是日期,正如您在评论中所说),
@image.start_at = DateTime.strptime(params[:image][:start_at], "%m-%d-%Y %I:%M %p")
会起作用。
我试图以一千种不同的方式解决这个问题,查看了数十篇 Whosebug 帖子以及处理 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")
这应该可以正常工作:
@image.start_at = Date.strptime(params[:image][:start_at], "%m-%d-%Y %I:%M %p")
解释:
- 您不必将其转换为字符串 - params 中的任何内容都是字符串;
- 由于
start_at
的类型是Date
,您应该将Date
对象传递给它,而不是DateTime
对象。
如果您的start_at
是日期时间类型(不是日期,正如您在评论中所说),
@image.start_at = DateTime.strptime(params[:image][:start_at], "%m-%d-%Y %I:%M %p")
会起作用。