在 Rails 2.x 中,我不需要特别设置任何时区信息,无论用户处于哪个时区,他们都会得到操作系统中指定的日期时间。
现在在 Rails 3 中,所有内容都以协调世界时(UTC)显示。是否有可能恢复默认的查看行为,而无需插入一些 js 来检测用户的时区?
谢谢!
Chris
现在在 Rails 3 中,所有内容都以协调世界时(UTC)显示。是否有可能恢复默认的查看行为,而无需插入一些 js 来检测用户的时区?
谢谢!
Chris
Invoice.last.created_at.localtime
从 IP 地址查找时区的简单方法:
require 'open-uri'
def get_time_zone_from_ip(ip)
# get external IP of rails server if running on localhost
ip = open("http://ifconfig.me/ip").string.strip if ip == "127.0.0.1"
location = open("http://api.hostip.info/get_html.php?ip=#{ip}&position=true")
if location.string =~ /Latitude: (.+?)\nLongitude: (.+?)\n/
json = open("http://ws.geonames.org/timezoneJSON?lat=#{$1}&lng=#{$2}")
geo = ActiveSupport::JSON.decode(json)
return ActiveSupport::TimeZone::MAPPING.index(geo["timezoneId"]) unless geo.empty?
end
end
如果你想查找邮政地址的坐标,GeoKit似乎是一个更强大的选项。