2012-09-16 18 views
10
में

एक रेल ऐप बनाने के लिए जहाँ मैं स्थानीय समय में समय क्षेत्र यानी अगर स्थान दिल्ली है समय क्षेत्र IST होना चाहिए प्राप्त करना चाहते हैं की जरूरत है और यदि स्थान सैन फ़्रांसिस्को है समय क्षेत्र पीडीटी होना चाहिए।स्थानीय समय क्षेत्र रूबी

रेल पर रूबी में इसे कैसे पूरा किया जाए?

पीएस एक लाइन कोड जो स्थान के अनुसार स्वचालित रूप से समय क्षेत्र सेट कर सकता है।

उत्तर

16

इस Time.now.getlocal.zone

+0

यह मैं स्थानीय क्षेत्र देता है। मैं चाहता हूं कि अगर नई दिल्ली में बैठे व्यक्ति मेरे ऐप तक पहुंच जाए तो उसे "आईएसटी" में समय मिल जाएगा और यदि कोई व्यक्ति सैनफ्रांसस्को में बैठा है तो उसे "पीएसटी" में समय मिल जाएगा .. मुझे जिस कॉन्फ़िगरेशन की आवश्यकता है इसे प्राप्त करने के लिए मेरे ऐप में बनाने के लिए? –

+0

Thanx suvankar। आपका जवाब काम किया। :) –

2

कोशिश आप ओल्सन समय क्षेत्र की जरूरत है (क्योंकि तीन अक्षर का समय क्षेत्रों अस्पष्ट हैं, के रूप में GMT ऑफसेट कर रहे हैं), तो ऐसा लगता है कि वहाँ शुद्ध रूबी/रेल में यह करने के लिए कोई रास्ता नहीं है की तरह। रूबी केवल संक्षिप्त कोड प्रदान करेगा (मूल रूप से date +%Z के माध्यम से), और रेल इसकी कॉन्फ़िगरेशन के समय क्षेत्र का उपयोग करता है (डिफ़ॉल्ट: यूटीसी)।

another answer साथ

जिसके अनुसार, shelling out can be made to work संयोजन में:

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 
संबंधित मुद्दे