2012-09-16 13 views
10

musi stworzyć Rails aplikacji, gdzie chcę, aby uzyskać czas w czasie lokalnym Strefa czyli jeśli lokalizacja jest Delhi strefa czasowa powinna być IST a jeśli lokalizacja jest San Fransisco strefa czasowa powinna być PDT.lokalnej strefy czasowej w Ruby

Jak to osiągnąć w rubinach na szynach?

P.S. Jeden kod linii, który może automatycznie ustawić strefę czasową zgodnie z lokalizacją.

Odpowiedz

16

spróbować tej Time.now.getlocal.zone

+0

To daje mi do strefy lokalnej. Chcę, jeśli osoba siedząca w New Delhi uzyskuje dostęp do mojej aplikacji, a następnie widzi czas w "IST" i jeśli dana osoba siedzi w SanFransisco, może zobaczyć czas w "PST". Jaka jest konfiguracja, jakiej potrzebuję zrobić w mojej aplikacji, aby to osiągnąć? –

+0

Thanx suvankar. Twoja odpowiedź zadziałała. :) –

2

Jeśli potrzebujesz strefę czasową Olson (bo stref czasowych trzyliterowe są niejednoznaczne, ponieważ w strefie przesunięcia), wygląda na to, że nie ma sposobu, aby to zrobić w czystej Ruby/Rails. Ruby poda tylko krótki kod (zasadniczo przez date +%Z), a Railsy używają strefy czasowej swojej konfiguracji (domyślnie: UTC).

Powiedział, shelling out can be made to work w połączeniu z 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 
Powiązane problemy