我正在使用html5 datetime-local type
<input type="datetime-local" value="" name="start_date1"/>
它将此信息发送给控制器: 2015-04-03T00:00
是否可以将其转换为: 2015-04-03 00:00:00 +0100
答案 0 :(得分:1)
您可以尝试将params[start_date1]
更改为日期时间:
require 'date' # not needed if you're using Rails
params[start_date1] = DateTime.strptime(params[start_date1], '%Y-%m-%dT%R')
下面:
%Y - 世纪年份(可以是负数,至少4位数)。
%m - 一年中的月份,零填充(01..12)。
%d - 月中的某天,零填充(01..31)。
%R - 24小时时间(%H:%M)。
你的params值&#34; 2015-04-03T00:00&#34;解析为&%;%Y-%m-%dT%R&#39;因为,%Y是2015,%m是04,%d是03,&#34; T&#34;告诉我时间是24小时格式。因此,我们只是按原样使用,并使用%R来解析&#34;小时:分钟&#34;。
您可以详细了解DateTime
format directives here。
答案 1 :(得分:1)
在Rails中,您应该在config.time_zone
中设置应用的默认时区。然后
Time.zone.parse(params[:start_date1])
将默认为该时区。
Time.zone
可以在运行时覆盖,请参阅http://api.rubyonrails.org/classes/ActiveSupport/TimeZone.html#method-i-parse
您还应该看一下:http://www.elabs.se/blog/36-working-with-time-zones-in-ruby-on-rails
答案 2 :(得分:1)
如果你正在使用Rails,请查看:github.com/launchpadlab/decanter
基本的想法是,这个宝石提供了一个让你在撞击你的模型之前转换它们的地方。有点像Active Model Serializers的反转。