Tag: 时区

将Microsoft Timezone转换为rails中的标准时区数据

我有一个连接到SQL Server数据库的rails应用程序,并且有一个连接到同一个数据库的Windows桌面应用程序。 Windows应用程序正在使用Microsoft Windows时区数据库,因此我获得了像Pacific Daylight Time这样的时区名称。 在rails中, ActiveSupport::TimeZone类为我们提供了一个映射哈希,其中键将类似于Pacific Time (US & Canada) ,其值将类似于America/Los_Angeles 。 有什么东西可以将Windows格式转换为标准格式,所以我可以使用Time.zone吗? 或者是否有时区gem可以让我配置rails来使用windows格式? 这是一个我已经开始帮助转换的数组,但有一点我不是100%肯定。 DAYLIGHT = [ {name: ‘Dateline Daylight Time’, offset: -12, alt: ‘International Date Line West’}, {name: ‘UTC-11’, offset: -11, alt: ”}, {name: ‘Hawaiian Daylight Time’, offset: -10, alt: ‘Hawaii’}, {name: ‘Alaskan Daylight Time’, offset: -9, alt: ‘Alaska’}, {name: ‘Pacific […]

time_select,在Ruby on Rails上有12小时的时间和时区

我需要从rails 2.3.8应用程序的用户捕获时间和时区,但是无法想到创建和解析选择的干净解决方案。 理想情况下,我会有以下的下拉菜单: 小时(1-12) 分钟(0-59) 上午下午 时区 有没有一个gem /插件可以完成我想要的东西? 我是否需要在数据库中存储时间和时区? 什么是最好的存储策略? 我最终需要在UTC中吐出这些值,但用户应该能够返回并在正确的时区内查看时间。

Rails:在时区中获取#beginning_of_day

我有一个rails应用程序的默认时区设置。 和Date对象的一个​​实例。 如何让Date#beginning_of_day返回指定时区内的一天的开始,而不是我当地的时区。 是否有其他方法可以在给定日期的指定时区内开始白天时间? date = Date.new(2014,10,29) zone = ActiveSupport::TimeZone.new(‘CET’) date.foo(zone) # should return “Wed, 29 Oct 2014 00:00:00 CET +01:00” zone = ActiveSupport::TimeZone.new(‘UTC’) date.foo(zone) # should return “Wed, 29 Oct 2014 00:00:00 UTC +00:00”

以UTC格式保存日期时间有时不准确

通常,处理日期时的最佳做法是将它们存储在UTC中并转换回用户在应用程序层中所期望的任何内容。 这不一定适用于将来的日期,特别是在日期/时间特定于用户时区的情况下。 基于当地时间的时间表需要存储当地时间。 在我的实例中,有一个属性是包含未来事件的start_time的时间戳,与现在或过去的所有其他事件(包括created_at和updated_at时间戳)相比较。 为什么 该特定字段是用户选择时间的未来事件的时间戳。 对于未来的事件,似乎最好的做法是不存储UTC 。 开发人员可以保存用户期望我们保存的内容:停机时间,而不是将时间与时区一起保存。 当用户选择上午10点时,即使由于夏令时用户与UTC的偏移在创建和事件日期之间发生变化,它也需要保持上午10点。 因此,在2016年6月,如果用户在悉尼午夜2017年1月1日创建活动,则该时间戳将以2017-01-01 00:00forms存储在数据库中。 创建时的偏移量为+10:00,但在事件发生时,它是+11:00 ..除非政府决定在此期间改变它。 同样明智的,我希望我在2016年1月1日午夜在布里斯class创建的单独活动也将存储为2017-01-01 00:00 。 我将时区即Australia/Brisbane存储在一个单独的领域。 在Rails中执行此操作的最佳实践方法是什么? 我尝试了很多选择但没有成功: 1.跳过转换 问题,这只会在读取时跳过转换,而不是写入。 self.skip_time_zone_conversion_for_attributes = [:start_time] 2.更改整个应用程序配置以使用config.default_timestamp :local 为此,我设置: 配置/ application.rb中 config.active_record.default_timezone = :local config.time_zone = ‘UTC’ 应用程序/模型/ event.rb … self.skip_time_zone_conversion_for_attributes = [:start_time] before_save :set_timezone_to_location after_save :set_timezone_to_default def set_timezone_to_location Time.zone = location.timezone end def set_timezone_to_default Time.zone […]

Rails – 根据用户选择动态设置time_zone

感谢您的帮助我的新网站的function之一! 这是关于动态time_zones,根据要求,用户可以从一组预定义的time_zones中选择us_zones。 当用户选择区域时,应将整个站点设置/更新为TimeZone。 但是,目前新的时区没有更新到Apache,并且时区的更新仅在服务器重启时发生。 我在考虑使用Rails Initializer类和initialize_time_zone()方法,但即使这样也需要重新启动rails服务器。 提前致谢!

如何使用事件处理Rails应用程序中的时区

我有乐队的Rails应用程序。 乐队可以导入他们的节目,这些节目都出现在不同的时区。 将这些事件存储在UTC中似乎需要做大量的工作。 我必须弄清楚任何节目创建的时区,然后在向用户显示时转换回节目的本地时区。 是否有一个简单的插件可以根据地理位置获得UTC偏移量? 这可能有所帮助,但有没有人看到我应该在UTC存储的任何主要原因? 我知道以UTC格式存储时间戳可能是一个好主意……但乐队活动时间?

更正rails DateTime.parse中夏令时的时间

只是增加了关于时区和DST问题的百万个问题。 我有一个具有单独的日期和时间字段的表单,我结合起来创建一个DateTime,就像这样 start_time = DateTime.parse(“#{parse_date(form_date)} #{form_start_time} #{Time.zone}”) 如果我在2012年8月21日和15:00填写表单,那么这些是我在重新加载表单时看到的值。 如果我然后在模型中查看我的start_time属性,则将其正确设置为Tue, 21 Aug 2012 15:00:00 EST +10:00 。 我遇到的问题是,如果我在今年晚些时候使用日期,那么夏令时就会开始(我在澳大利亚)。 如果我使用2012年12月21日和15:00然后检查start_time,我会看到Fri, 21 Dec 2012 16:00:00 EST +11:00 。 我对这个问题的解释是日期保存在我当前的时区(+10:00),因为这是我告诉DateTime.parse要做的事情。 然而,当返回值时,Rails会查看日期并说“嘿,它是12月的夏令时”并返回+11:00时区的时间。 我想要做的是告诉DateTime.parse如果DST生效,将时间保存在+11:00时区。 显然将Time.zone传递给我的字符串并不能实现这一点。 有一个简单的方法吗? 我可以看到使用Time#dst做到这一点的方法吗? 但我怀疑这会产生一些非常丑陋的错综复杂的代码。 我以为可能会有一种我错过的内置方式。

在Rails中,如何以可与ActiveSupport :: TimeZone .parse()一起使用的格式获取当前时区(Time.zone)?

方法如何获取当前的Time.zone并将其置于ActiveSupport::TimeZone[some_zone].parse()可用的格式中? Time.zone.to_s返回一个不能与ActiveSupport::TimeZone[zone].parse()一起使用的字符串似乎很奇怪 Time.zone.to_s返回”(GMT-08:00) Pacific Time (US & Canada)” 但ActiveSupport::TimeZone[“(GMT-08:00) Pacific Time (US & Canada)”]是nil 。 ActiveSupport::TimeZone[“(GMT-08:00) Pacific Time (US & Canada)”] => nil ActiveSupport::TimeZone[“Pacific Time (US & Canada)”] => (GMT-08:00) Pacific Time (US & Canada)

在Rails中设置当前的Time.zone?

我的页面上的Javascript将客户端UTC偏移量保存到cookie。 如何使用此cookie创建TimeZone并将其分配给Time.zone? 我需要这样的东西: before_filter :set_time_zone def set_time_zone Time.zone = ActiveSupport::TimeZone.new(‘my timezone’, cookies[:timezone]) end 除了这个表达式的右边部分不起作用,我不确定我是否在这里采取正确的方式。 无法得到它。

时区与铁轨3

我有相当普遍的问题,但由于某种原因,我已经尝试了网络上的所有建议,似乎没有任何工作。 我已将配置中的时区设置为’EST’ config.time_zone = ‘Eastern Time (US & Canada)’ 但是当屏幕上显示时间时,它会继续显示存储在数据库中的UTC时间。 我尝试了调试器,这是输出 (rdb:1) Time.zone #<ActiveSupport::TimeZone:0x1061f4760 @utc_offset=nil, @current_period=nil, @name="Eastern Time (US & Canada)", @tzinfo=#> (rdb:1) Order.first.placed_at Fri Jan 01 15:00:00 UTC 2010 更新:这是另一个有相同问题的用户显示时Rails时区错误