2012-09-16 8 views
10

nhu cầu để tạo ra một ứng dụng Rails nơi tôi muốn để có được thời gian theo giờ địa phương Zone tức là nếu địa điểm Delhi múi giờ nên IST và nếu địa điểm là San Fransisco múi giờ phải là PDT.Time Zone địa phương trong Ruby

Làm cách nào để thực hiện điều này bằng ruby ​​trên đường ray?

P.S. Một dòng mã có thể đặt múi giờ tự động theo vị trí.

Trả lời

16

thử này Time.now.getlocal.zone

+0

này mang lại cho tôi khu vực địa phương. Tôi muốn rằng nếu một người ngồi ở New Delhi truy cập vào ứng dụng của tôi sau đó ông được nhìn thấy thời gian trong "IST" và nếu một người đang ngồi ở SanFransisco ông được nhìn thấy thời gian trong "PST" .. Cấu hình tôi cần là gì để thực hiện trong ứng dụng của tôi để đạt được điều này? –

+0

Thanx suvankar. Câu trả lời của bạn đã hoạt động. :) –

2

Nếu bạn cần múi giờ Olson (vì múi giờ ba chữ là mơ hồ, như giờ GMT offsets), có vẻ như không có cách nào để làm điều đó trong tinh khiết Ruby/Rails. Ruby sẽ chỉ cung cấp mã ngắn (về cơ bản là thông qua date +%Z) và Rails sử dụng múi giờ của cấu hình của nó (mặc định: UTC).

Điều đó nói rằng, shelling out can be made to work kết hợp với 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