美文网首页
Rails 在国际化过程中时区问题的处理

Rails 在国际化过程中时区问题的处理

作者: sbtiny | 来源:发表于2016-10-01 14:10 被阅读226次

1. 在请求的时候开始的时候重置 TimeZone

#ApplicationController
around_action:set_time_zone

def set_time_zone
    old_time_zone = Time.zone
    Time.zone = current_user.timezone if user_signed_in?
    Stripe.api_key = Setting.value('stripe_api_secret_key')
    begin
      yield
    ensure
      Time.zone = old_time_zone
    end
 end

2. 调用

要定义一个 DATE_FOMATE, 默认的 to_s(:db) 调用的是UTC 的时间,并不会根据时区发生变化

#initiallizers/time_format.rb
Time::DATE_FORMATS.merge!(
  :localdb => '%Y-%m-%d %H:%M:%S'
  }
)

#调用
current_user.created_at.to_s(:localdb)

3. 涉及夏令时的处理

翻译叫 daylight savings time, 指美国等地区在夏季天亮的早的时候,拨快一个钟,冬天的时候再拨回来,rails 已经处理了这个问题,在存数据库的时候就已经转换好了,这里列举几个可能用到的方法

#新建 timezone
new_zone = ActiveSupport.new('Alaska')

#用 Alaska 的 zone 解析时间
time = new_zone.parse("2000-1-1")
#=> Sat, 01 Jan 2000 00:00:00 AKST -09:00

new_zone.now
#=> Fri, 30 Sep 2016 20:25:15 AKDT -08:00

#判断是否是夏令时, Rails 提供的方法
new_zone.parse("2000-1-1").dst?

#某个时间的所处的时令的开始和结束
tz = ActiveSupport::TimeZone[timezone].tzinfo.period_for_utc(time)
tz.local_end
#=> Sun, 02 Apr 2000 02:00:00 +0000
tz.local_start
#=> Sun, 31 Oct 1999 01:00:00 +0000

#转换时区
Time.now.in_time_zone('Alaska')

相关文章

  • Rails 在国际化过程中时区问题的处理

    1. 在请求的时候开始的时候重置 TimeZone 2. 调用 要定义一个 DATE_FOMATE, 默认的 to...

  • Rails时区问题

    一个Rails应用有三个时间: 服务器系统的时间 Rails应用的时间 存入数据库的时间 如果你想存入本地时间到数...

  • 国际化测试中的多时区测试

    产品做国际化后,需要做国际化相关的测试,如果产品功能中涉及到时间,在国际化过程中会涉及到多时区的改造和相关测试。 ...

  • rails 中的时区问题

    UTC 为协调世界时。 其中东西十二区各站7.5度。 UTC 与当地时间转换 在东时区UTC时间 加上所在时区时差...

  • 给API和MySQL选择正确的时间类型

    国际化业务对时间的处理非常重要。考虑到复杂的时区问题,在设计API和MySQL表的时候,需要谨慎选择时间类型。 对...

  • ruby on rails 安装报错“LZMA_OK”

    最近对ruby有了新的兴趣,既然学习ruby,当然rails不容错过。所以在安装rails 过程中遇到的问题,...

  • Json转换中Date那点事

    Java Bean传递过程中Date的格式化过程中时区的处理是一件非常恼人的事情。相信碰到过相关问题的同学应该深有...

  • Docker 处理时区问题

    本文主要记录在使用 Alpine 镜像时如何解决时区问题。 首先创建一个基础的镜像用于测试: 构建镜像:docke...

  • 时区问题 - Python 为例

    同事在开发过程中遇到了时区问题,经过同事们的努力问题最终解决了。这让我发现时区接口比我想像的要复杂一些。 首先,时...

  • Java项目时区处理

    近期在搞一个跨地区的项目,用户来自多个不同的时区,所以需要考虑时区的处理问题。 比如数据的创建时间createDa...

网友评论

      本文标题:Rails 在国际化过程中时区问题的处理

      本文链接:https://www.haomeiwen.com/subject/tyeryttx.html