Rails jquery datepicker时区

Rails jquery datepicker timezones

我在尝试使用Rails处理JQuery日期/时间选择器中的时区时遇到问题。 datepicker,正确显示本地时区。问题出现了,当我将所选日期保存到我的数据库中时,rails将其保存为UTC时间,即使时间在客户端的时区中。当我尝试将时间转换为utc(Time.zone.parse(params [:time])。utc)时,它给出了与params [:time]相同的值,这是本地时间。

我不想在environment.rb文件中更改config.time_zone的设置,因为我不希望将时间保存在服务器的本地时区中。

我想要做的是接收本地时间,并将其转换为utc,这样我就可以在服务器上安排一个cron作业,其时间设置为utc。我想节省数据库中的时间,作为用户的本地时区...但我无法找到获取客户端时区的方法!

除了在datepicker上添加时区作为选项之外,我还有其他选择吗?


DateTime Picker为您的视图提供正确的用户时间 - 之后由您来解析时间,调整用户的时区,并通过添加或减去适当的小时数来相应地安排您的cron作业。 这是我如何去做的:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# convert your param from a datepicker string to time:

start_time=DateTime.strptime(params[:start_time],"%m/%d/%Y %H:%M:%S").to_time

 # datepicker gives times in UTC to your server *BUT* it appears in the local time to the user. Make sure to adjust for this time difference.

start_time = start_time.in_time_zone(current_user.time_zone) # I let users pick their time zone.

 # account for DST. does this work? I think so.
 offset = (start_time.utc_offset)/60/60

 # now adjust by the hours offset.  you likely want to keep the time in utc for your database...

 adjusted_start_time = (start_time-offset.hours).utc

来自另一个SO帖子的相关信息转换UTC到Rails 3中的本地时间:

1
2
3
4
5
# Rails has it's own names. See them with: rake time:zones:us To see other zone-related rake tasks: rake -D time

# So, to convert to EST, catering for DST automatically:

Time.now.in_time_zone("Eastern Time (US & Canada)")