Ruby on Rails转换日期

时间:2015-04-13 06:51:42

标签: ruby-on-rails ruby datetime-select

我正在使用html5 datetime-local type

<input type="datetime-local" value="" name="start_date1"/>

它将此信息发送给控制器: 2015-04-03T00:00

是否可以将其转换为: 2015-04-03 00:00:00 +0100

3 个答案:

答案 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的反转。