2012-09-16 19 views
10

necesita crear una aplicación Rails donde quiero obtener la hora en hora local Zona es decir, si la ubicación es Delhi la zona horaria debe ser IST y si el lugar es San Fransisco la zona horaria debe ser PDT.zona horaria local en Ruby

¿Cómo lograr esto en ruby ​​on rails?

P.S. Código de una línea que puede establecer la zona horaria automáticamente según la ubicación.

Respuesta

16

probar esto Time.now.getlocal.zone

+0

Esto me da la zona local. Quiero que si una persona sentada en Nueva Delhi accede a mi aplicación, entonces vea la hora en "IST" y si una persona está sentada en SanFransisco, vea la hora en "PST" ... ¿Cuál es la configuración que necesito? hacer en mi aplicación para lograr esto? –

+0

Thanx suvankar. Tu respuesta funcionó. :) –

2

Si necesita la zona horaria Olson (porque las zonas de tiempo de tres letras son ambiguos, como lo son las compensaciones GMT), parece que no hay manera de hacerlo en Ruby puro/rieles. Ruby solo proporcionará el código corto (básicamente a través del date +%Z), y Rails usa la zona horaria de su configuración (por defecto: UTC).

Dicho esto, shelling out can be made to work en combinación con another answer:

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