2010-04-23 11 views

उत्तर

181
time.in_time_zone(time_zone) 

उदाहरण:

zone = ActiveSupport::TimeZone.new("Central Time (US & Canada)") 
Time.now.in_time_zone(zone) 

या सिर्फ

Time.now.in_time_zone("Central Time (US & Canada)") 

आप ऐसा करके ActiveSupport समय क्षेत्रों के नाम पा सकते हैं:

ActiveSupport::TimeZone.all.map(&:name) 
# or for just US 
ActiveSupport::TimeZone.us_zones.map(&:name) 
+0

आईआरबी में, जब मैं Time.now.in_time_zone ('सीएसटी') की कोशिश, मैं "अपरिभाषित विधि 'in_time_zone'" त्रुटि मिलती है। क्या रेलवे कक्षाएं हैं जिन्हें मुझे काम करने के लिए जरूरी है? –

+0

आप किस रेल का उपयोग कर रहे हैं? यदि आप Time.zone.now.in_time_zone (...) करते हैं तो यह काम करता है? – mckeed

+0

कोड नमूना के लिए बहुत बहुत धन्यवाद। यह इसे साफ़ कर दिया (फ्रेड की टिप्पणी के साथ)। मैं बहुत सारी चीजें गलत कर रहा था, मैं यह भी समझा नहीं सकता :-) –

3

ActiveSupport के TimeWithZone वस्तुओं का प्रयास करें MANIPUL टाइमज़ोन के साथ परेड। ActiveSupport एक UTC समय को निर्दिष्ट टाइमज़ोन समय क्षेत्र में परिवर्तित करने के लिए in_time_zone विधि भी प्रदान करता है। मैकिड का जवाब कोड दिखाता है।

+0

मेरी कक्षा में टाइमविथज़ोन आयात करने के लिए वाक्यविन्यास क्या है? या क्या मैं रेल के साथ डिफ़ॉल्ट रूप से इसे प्राप्त करता हूं? –

+1

मेरा मानना ​​है कि आप इसे डिफ़ॉल्ट रूप से प्राप्त करते हैं। मैकिड में आपके पास आवश्यक कोड है, लेकिन आप इसे irb में नहीं देख पाएंगे। आपको इसे रेल में चलाने की जरूरत है। – Fred

+0

आप सही हैं - धन्यवाद, फ्रेड - यह डिफ़ॉल्ट रूप से रेल के साथ आता है। मैं स्ट्रॉ पर पकड़ रहा था, इसे आईआरबी में काम करने की कोशिश कर रहा था। –

0

मैं रेल 4 में simple_form उपयोग कर रहा हूँ और मैं बस

<%= f.input :time_zone, :as => :time_zone %> 

प्रवास के साथ के रूप में इनपुट क्षेत्र जोड़ा

class AddTimeZoneColumnToTextmessage < ActiveRecord::Migration 
    def change 
    add_column :textmessages, :time_zone, :string 
    end 
end 
3

शायद ज़रुरत पड़े, अगर आप रेल में ActiveRecord वस्तु के साथ काम कर रहे हैं ।

यह एक अच्छा विचार है एक अनुरोध के अनुसार आधार समयक्षेत्र कि डिफ़ॉल्ट समय क्षेत्र config.time_zone

अधिक जानकारी में सेट मैं https://stackoverflow.com/a/25055692/542995

4

पर समझाने ओवरराइड करता है के लिए Time.use_zone उपयोग करने के लिए हो सकता है अगर Time.zone यह तो अपना इच्छित समय क्षेत्र है आप उपयोग कर सकते हैं @date.to_time.to_datetime

> @date 
=> Tue, 02 Sep 2014 23:59:59 +0000 
> @date.class 
=> DateTime 
> @date.to_time 
=> 2014-09-02 12:59:59 -1100 
> @date.to_time.to_datetime 
=> Tue, 02 Sep 2014 12:59:59 -1100 
+0

रेल 5 पर काम नहीं करता है ' टाइम.ज़ोन # => यूरोप/पेरिस my_date # => बुध, 2 9 मार्च 2017 19:00:20 +0200 my_date.to_time # =>" 2017-03-29T17 : 00: 20।000 + 00: 00 " my_date.to_time.to_datetime # => बुध, 2 9 मार्च 2017 17:00:20 +0000 ' –

संबंधित मुद्दे

 संबंधित मुद्दे