रूबी / रेल में, मैं UTC डेटटाइम को किसी अन्य समय क्षेत्र में कैसे परिवर्तित करूं?
रूबी / रेल में, मैं UTC डेटटाइम को किसी अन्य समय क्षेत्र में कैसे परिवर्तित करूं?
जवाबों:
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)
require 'active_support/time'
पहले।
rake time:zones:all
। यह भी देखें rake -D time
। डिफ़ॉल्ट समय क्षेत्र सेट करें config/application.rb
।
यदि 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
सादे माणिक्य में, केवल require 'date'
, new_offset
विधि का उपयोग करें :
require 'date'
d=DateTime.parse('2000-01-01 12:00 +0200')
l=d.new_offset('-0700')
u=l.new_offset('UTC')
puts "#{u.strftime('%a %F %T %Z')} ❖ #{l.strftime('%a %F %T %Z')}"
रूबी 2.3.7 के साथ परीक्षण किया गया जो मैक ओएस एक्स 10.13 पर मानक आया।
ActiveSupport की TimeWithZone ऑब्जेक्ट्स को TimeZone के साथ जोड़कर देखें। ActiveSupport एक UTC समय को एक निर्दिष्ट TimeZone टाइम ज़ोन में परिवर्तित करने के लिए in_time_zone विधि भी प्रदान करता है। mckeed का जवाब कोड दिखाता है।
बस के मामले में, यदि आप पटरियों में ActiveRecord ऑब्जेक्ट के साथ काम कर रहे हैं।
यह एक अच्छा विचार हो सकता है Time.use_zone
कि प्रति अनुरोध आधार समयक्षेत्र के लिए उपयोग किया जाए जो तयशुदा समयक्षेत्र में ओवरराइड करता हैconfig.time_zone
अधिक विवरण मैं https://stackoverflow.com/a/25055692/542995 पर समझाता हूं
मैं रेल्स 4 में simple_form का उपयोग कर रहा हूं और मैंने सिर्फ इनपुट फील्ड को इसमें जोड़ा है
<%= f.input :time_zone, :as => :time_zone %>
प्रवास के साथ
class AddTimeZoneColumnToTextmessage < ActiveRecord::Migration
def change
add_column :textmessages, :time_zone, :string
end
end