Ruby 中的本地时区



需要创建一个Rails应用程序,我想在其中获取本地时区的时间,即如果位置是德里,时区应该是IST,如果位置是旧金山,时区应该是PDT

如何在轨道上的红宝石中实现这一点?

附言一个可以根据位置自动设置时区的行代码。

试试这个Time.now.getlocal.zone

如果你需要奥尔森时区(因为三个字母的时区是不明确的,GMT偏移量也是如此),看起来在纯Ruby/Rails中没有办法做到这一点。Ruby只会提供短代码(基本上通过date +%Z),Rails使用其配置的时区(默认:UTC)。

也就是说,掏钱可以与另一个答案结合使用:

def get_local_timezone_str
  # Yes, this is actually a shell script…
  olsontz = `if [ -f /etc/timezone ]; then
    cat /etc/timezone
  elif [ -h /etc/localtime ]; then
    readlink /etc/localtime | sed "s/\/usr\/share\/zoneinfo\///"
  else
    checksum=`md5sum /etc/localtime | cut -d' ' -f1`
    find /usr/share/zoneinfo/ -type f -exec md5sum {} \; | grep "^$checksum" | sed "s/.*\/usr\/share\/zoneinfo\///" | head -n 1
  fi`.chomp
  # …and it almost certainly won't work with Windows or weird *nixes
  throw "Olson time zone could not be determined" if olsontz.nil? || olsontz.empty?
  return olsontz
end

相关内容

  • 没有找到相关文章

最新更新