每天一剂Rails良药之Dealing With Time-zones

本文介绍了一种确保全球用户正确显示本地时间的方法。通过记录用户的时区,并使用Rails框架中的TimeZone类进行时间转换,实现了不同地区用户的时间同步。
UTC时间+时区偏移=本地时间
如果我们的系统需要支持全球用户,怎样保证不同时区的用户显示正确的本地时间呢
我们可以让用户选择自己的时区,记录在数据库,然后转换时间后显示
如users表有一个string的timezone字段记录时区
而恰好Rails里有一个TimeZone类,TimeZone.all可以得到所有时区:
[code]
class User < ActiveRecord::Base
composed_of :tz,
:class_name => 'TimeZone',
:mapping => %w(time_zone name)

class ApplicationController < ActionController::Base
def user2utc(time)
current_user.tz.unadjust(time)
end

def utc2user(time)
current_user.tz.adjust(time)
end
end
[/code]
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值