Ruby on rails 我怎么。。获取本地时间上午9:00的时间值,而不考虑时区?

Ruby on rails 我怎么。。获取本地时间上午9:00的时间值,而不考虑时区?,ruby-on-rails,time,timezone,local,Ruby On Rails,Time,Timezone,Local,在我的应用程序中,我需要将开始时间的变量设置为本地上午9:00,无论用户位于何处 我为每个用户都有一个时区变量,保存和检索都在工作。但我需要在创建新事件时将变量设置为用户本地时区的上午9:00 我当前的方法使用服务器的本地时间,然后针对单个用户的时区进行调整。我不知道我不知道的是什么-是否有一个命令可以为“今天上午9:00的日期”创建值 我目前的代码是: t = Time.now.to_date.beginning_of_day + 11.hours (强制我的主用户和服务器在不同时区之间的2

在我的应用程序中,我需要将开始时间的变量设置为本地上午9:00,无论用户位于何处

我为每个用户都有一个时区变量,保存和检索都在工作。但我需要在创建新事件时将变量设置为用户本地时区的上午9:00

我当前的方法使用服务器的本地时间,然后针对单个用户的时区进行调整。我不知道我不知道的是什么-是否有一个命令可以为“今天上午9:00的日期”创建值

我目前的代码是:

t = Time.now.to_date.beginning_of_day + 11.hours

(强制我的主用户和服务器在不同时区之间的2小时偏移量)。

Ruby有一个时间类,它映射到大多数数据库中的时间类。在包括mysql在内的大多数数据库中,它被表示为
HH:mm:ss
,因此日期部分被忽略

除非外部更改,否则时间应始终保持不变(09:00)。您可以使用
t.hour
t.min
获取此时间组件,并使用正确的日期/时间和针对用户时区的调整构造一个
Date
对象

>> t = Time.parse("09:00")
=> 2010-04-07 09:00:00 -0700
>> t.hour
=> 9
>> t.min
=> 0
你考虑过这个问题吗?它是DST意识的,比DST更加充实

您需要使用您对用户时区的了解。这里有一个简单的例子:

require 'tzinfo'
tz = TZInfo::Timezone.get('America/New_York')
local = tz.utc_to_local(Time.utc(2010,4,8,9,0,0))
因此,东部标准时间/东部标准时间上午9:00的当地时间表示为UTC 05:00

irb(main):004:0> local.hour
=> 5

这种方法奏效了。谢谢我的结果是:t=Time.parse(“09:00”)start\u Time=Time.now.start\u of_day+t.hour.hours