我正在使用 html5 datetime-local 类型
<input type="datetime-local" value="" name="start_date1"/>
它将这个发送到控制器:2015-04-03T00:00
是否可以将其转换为:2015-04-03 00:00:00 +0100
我正在使用 html5 datetime-local 类型
<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 - 带世纪的年份(可以是负数,至少 4 位)。
%m - 一年中的月份,用零填充 (01..12)。
%d - 一个月中的哪一天,用零填充 (01..31)。
%R - 24 小时制 (%H:%M)。
您的参数值“2015-04-03T00:00”被解析为 '%Y-%m-%dT%R' 因为,%Y 是 2015,%m 是 04,%d 是 03,“T”告诉那个时间是 24 小时格式。所以,我们就按原样放置,并使用 %R 来解析“小时:分钟”。
您可以在此处阅读有关DateTime
格式指令的更多信息。
在 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 为您提供了一个地方,可以在参数到达您的模型之前对其进行转换。有点像 Active Model Serializers 的逆。