Ruby 在 Rails 转换日期

Ruby on Rails converting date

我正在使用 html5 日期时间本地类型

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

它将此发送到控制器: 2015-04-03T00:00

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

您可以尝试将 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 - Year with century (can be negative, 4 digits at least).

%m - Month of the year, zero-padded (01..12).

%d - Day of the month, zero-padded (01..31).

%R - 24-hour time (%H:%M).

您的参数值“2015-04-03T00:00”是用“%Y-%m-%dT%R”解析的,因为 %Y 是 2015,%m 是 04,%d 是 03,“ T”表示时间为 24 小时格式。所以,我们只是按原样使用,并使用 %R 来解析 "hours:minutes".

您可以阅读更多关于 DateTime format directives here

在 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

如果您使用的是 Rails,请查看:github。com/launchpadlab/decanter

基本思想是,这个 gem 为您提供了一个地方,让您可以在参数到达您的模型之前对其进行转换。有点像活动模型序列化器的反面。