Ruby on Rails 5.2 - ActiveSupport::TimeWithZone

वर्ग सक्रियसमूह :: टाइमविथजोन




ruby

वर्ग सक्रियसमूह :: टाइमविथजोन

जनक:
Object
शामिल मॉड्यूल:
DateAndTime :: संगतता

एक समय जैसी कक्षा जो किसी भी समय क्षेत्र में एक समय का प्रतिनिधित्व कर सकती है। आवश्यक है क्योंकि मानक रूबी Time इंस्टेंसेस UTC और सिस्टम के ENV['TZ'] ज़ोन तक सीमित हैं।

आपको कभी भी सीधे new माध्यम से TimeWithZone उदाहरण बनाने की आवश्यकता नहीं होनी चाहिए। इसके बजाय Time , और Time और DateTime Time पर in_time_zone पर local , parse , और now पर विधियों का उपयोग करें।

Time.zone = 'Eastern Time (US & Canada)'        # => 'Eastern Time (US & Canada)'
Time.zone.local(2007, 2, 10, 15, 30, 45)        # => Sat, 10 Feb 2007 15:30:45 EST -05:00
Time.zone.parse('2007-02-10 15:30:45')          # => Sat, 10 Feb 2007 15:30:45 EST -05:00
Time.zone.at(1171139445)                        # => Sat, 10 Feb 2007 15:30:45 EST -05:00
Time.zone.now                                   # => Sun, 18 May 2008 13:07:55 EDT -04:00
Time.utc(2007, 2, 10, 20, 30, 45).in_time_zone  # => Sat, 10 Feb 2007 15:30:45 EST -05:00

इन विधियों के आगे प्रलेखन के लिए Time और TimeZone देखें।

TimeWithZone इंस्टेंसेस रूबी Time इंस्टेंसेस के रूप में एक ही API को कार्यान्वित करते हैं, ताकि Time और TimeWithZone इंस्टेंसेस आपस में TimeWithZone

t = Time.zone.now                     # => Sun, 18 May 2008 13:27:25 EDT -04:00
t.hour                                # => 13
t.dst?                                # => true
t.utc_offset                          # => -14400
t.zone                                # => "EDT"
t.to_s(:rfc822)                       # => "Sun, 18 May 2008 13:27:25 -0400"
t + 1.day                             # => Mon, 19 May 2008 13:27:25 EDT -04:00
t.beginning_of_year                   # => Tue, 01 Jan 2008 00:00:00 EST -05:00
t > Time.utc(1999)                    # => true
t.is_a?(Time)                         # => true
t.is_a?(ActiveSupport::TimeWithZone)  # => true

स्थिरांक

precisions

गुण

time_zone [R]

पब्लिक क्लास के तरीके

# File activesupport/lib/active_support/time_with_zone.rb, line 42
def self.name
  "Time"
end

टाइप चेकिंग को विफल करने के लिए 'समय' के रूप में रिपोर्ट वर्ग का नाम।

new (utc_time, time_zone, local_time = nil, period = nil) स्रोत दिखाएं
# File activesupport/lib/active_support/time_with_zone.rb, line 52
def initialize(utc_time, time_zone, local_time = nil, period = nil)
  @utc = utc_time ? transfer_time_values_to_utc_constructor(utc_time) : nil
  @time_zone, @time = time_zone, local_time
  @period = @utc ? period : get_period_and_ensure_valid_local_time(period)
end

सार्वजनिक प्रवृत्ति के तरीके

# File activesupport/lib/active_support/time_with_zone.rb, line 276
def +(other)
  if duration_of_variable_length?(other)
    method_missing(:+, other)
  else
    result = utc.acts_like?(:date) ? utc.since(other) : utc + other rescue utc.since(other)
    result.in_time_zone(time_zone)
  end
end

वर्तमान वस्तु के समय के अंतराल को जोड़ता है और उस मान को एक नए TimeWithZone ऑब्जेक्ट के रूप में TimeWithZone है।

Time.zone = 'Eastern Time (US & Canada)' # => 'Eastern Time (US & Canada)'
now = Time.zone.now # => Sun, 02 Nov 2014 01:26:28 EDT -04:00
now + 1000          # => Sun, 02 Nov 2014 01:43:08 EDT -04:00

यदि हम परिवर्तनशील लंबाई की अवधि (जैसे, वर्ष, महीने, दिन) जोड़ रहे हैं, तो time से आगे बढ़ें, अन्यथा DST सीमाओं के पार जाते समय सटीकता के लिए utc से आगे utc

उदाहरण के लिए, एक समय + 24. घंटे 24 घंटे अग्रिम करेंगे, जबकि एक समय + दिन दिन के आधार पर 23-25 ​​घंटे अग्रिम होगा।

now + 24.hours      # => Mon, 03 Nov 2014 00:26:28 EST -05:00
now + 1.day         # => Mon, 03 Nov 2014 01:26:28 EST -05:00
के रूप में भी:
# File activesupport/lib/active_support/time_with_zone.rb, line 303
def -(other)
  if other.acts_like?(:time)
    to_time - other.to_time
  elsif duration_of_variable_length?(other)
    method_missing(:-, other)
  else
    result = utc.acts_like?(:date) ? utc.ago(other) : utc - other rescue utc.ago(other)
    result.in_time_zone(time_zone)
  end
end

एक नया TimeWithZone ऑब्जेक्ट देता है जो वर्तमान ऑब्जेक्ट के समय और other समय के बीच अंतर का प्रतिनिधित्व करता है।

Time.zone = 'Eastern Time (US & Canada)' # => 'Eastern Time (US & Canada)'
now = Time.zone.now # => Mon, 03 Nov 2014 00:26:28 EST -05:00
now - 1000          # => Mon, 03 Nov 2014 00:09:48 EST -05:00

यदि परिवर्तनीय लंबाई (यानी, वर्ष, महीने, दिन) की Duration घटाते हुए, time से पीछे की ओर जाएं, अन्यथा DST सीमाओं के पार जाते समय सटीकता के लिए utc से पीछे की ओर utc

उदाहरण के लिए, एक समय - 24. घंटे ठीक 24 घंटे घटाना होगा, जबकि एक समय - 1. दिन के आधार पर 23-25 ​​घंटे घटाना होगा।

now - 24.hours      # => Sun, 02 Nov 2014 01:26:28 EDT -04:00
now - 1.day         # => Sun, 02 Nov 2014 00:26:28 EDT -04:00
# File activesupport/lib/active_support/time_with_zone.rb, line 225
def <=>(other)
  utc <=> other
end

तुलना के लिए UTC में समय का उपयोग करें।

# File activesupport/lib/active_support/time_with_zone.rb, line 464
def acts_like_time?
  true
end

तो वह self acts_like?(:time)

अग्रिम (विकल्प) दिखाएँ स्रोत
# File activesupport/lib/active_support/time_with_zone.rb, line 392
def advance(options)
  # If we're advancing a value of variable length (i.e., years, weeks, months, days), advance from #time,
  # otherwise advance from #utc, for accuracy when moving across DST boundaries
  if options.values_at(:years, :weeks, :months, :days).any?
    method_missing(:advance, options)
  else
    utc.advance(options).in_time_zone(time_zone)
  end
end

प्रोलेप्टिक ग्रेगोरियन कैलेंडर के अनुसार वर्षों, महीनों और दिनों के लिए सटीक Time गणना प्रदान करने के लिए Date का उपयोग करता है। परिणाम को एक नए TimeWithZone ऑब्जेक्ट के रूप में लौटाया जाता है।

options पैरामीटर इनमें से किसी भी कुंजी के साथ एक हैश लेता है :years :months , :weeks , :days , :days :minutes :seconds

यदि परिवर्तनीय लंबाई (अर्थात, वर्ष, सप्ताह, महीने, दिन) के utc से आगे बढ़ रहे हैं, तो time से आगे बढ़ें, अन्यथा DST सीमाओं के पार जाते समय सटीकता के लिए utc से आगे utc

Time.zone = 'Eastern Time (US & Canada)' # => 'Eastern Time (US & Canada)'
now = Time.zone.now # => Sun, 02 Nov 2014 01:26:28 EDT -04:00
now.advance(seconds: 1) # => Sun, 02 Nov 2014 01:26:29 EDT -04:00
now.advance(minutes: 1) # => Sun, 02 Nov 2014 01:27:28 EDT -04:00
now.advance(hours: 1)   # => Sun, 02 Nov 2014 01:26:28 EST -05:00
now.advance(days: 1)    # => Mon, 03 Nov 2014 01:26:28 EST -05:00
now.advance(weeks: 1)   # => Sun, 09 Nov 2014 01:26:28 EST -05:00
now.advance(months: 1)  # => Tue, 02 Dec 2014 01:26:28 EST -05:00
now.advance(years: 1)   # => Mon, 02 Nov 2015 01:26:28 EST -05:00
पहले (अन्य) स्रोत दिखाएँ
# File activesupport/lib/active_support/time_with_zone.rb, line 331
def ago(other)
  since(-other)
end

वर्तमान ऑब्जेक्ट के समय से समय के अंतराल को TimeWithZone और परिणाम को एक नए TimeWithZone ऑब्जेक्ट के रूप में TimeWithZone है।

Time.zone = 'Eastern Time (US & Canada)' # => 'Eastern Time (US & Canada)'
now = Time.zone.now # => Mon, 03 Nov 2014 00:26:28 EST -05:00
now.ago(1000)       # => Mon, 03 Nov 2014 00:09:48 EST -05:00

यदि हम परिवर्तनीय लंबाई (यानी, वर्ष, महीने, दिन) की Duration घटा रहे हैं, तो time से utc जाएं, अन्यथा DST सीमाओं के पार जाते समय सटीकता के लिए, utc से पीछे utc

उदाहरण के लिए, time.ago(24.hours) ठीक 24 घंटे पीछे जाएगा, जबकि time.ago(1.day) दिन के आधार पर, 23-25 ​​घंटे पीछे चला जाएगा।

now.ago(24.hours)   # => Sun, 02 Nov 2014 01:26:28 EDT -04:00
now.ago(1.day)      # => Sun, 02 Nov 2014 00:26:28 EDT -04:00
as_json (विकल्प = nil) स्रोत दिखाएं
# File activesupport/lib/active_support/time_with_zone.rb, line 167
def as_json(options = nil)
  if ActiveSupport::JSON::Encoding.use_standard_json_time_format
    xmlschema(ActiveSupport::JSON::Encoding.time_precision)
  else
    %(#{time.strftime("%Y/%m/%d %H:%M:%S")} #{formatted_offset(false)})
  end
end

JSON एन्कोडिंग के लिए एक स्ट्रिंग के लिए समय को समायोजित करता है। डिफ़ॉल्ट प्रारूप ISO 8601 है। आप ActiveSupport::JSON::Encoding.use_standard_json_time_format को false सेट ActiveSupport::JSON::Encoding.use_standard_json_time_format % Y /% m /% d% H:% M:% S + ऑफ़सेट शैली प्राप्त कर ActiveSupport::JSON::Encoding.use_standard_json_time_format

# With ActiveSupport::JSON::Encoding.use_standard_json_time_format = true
Time.utc(2005,2,1,15,15,10).in_time_zone("Hawaii").to_json
# => "2005-02-01T05:15:10.000-10:00"

# With ActiveSupport::JSON::Encoding.use_standard_json_time_format = false
Time.utc(2005,2,1,15,15,10).in_time_zone("Hawaii").to_json
# => "2005/02/01 05:15:10 -1000"
के बीच? (न्यूनतम, अधिकतम) दिखाएँ स्रोत
# File activesupport/lib/active_support/time_with_zone.rb, line 231
def between?(min, max)
  utc.between?(min, max)
end

यदि वर्तमान ऑब्जेक्ट का समय निर्दिष्ट min और max समय के भीतर है, तो यह सही है।

# File activesupport/lib/active_support/time_with_zone.rb, line 475
def blank?
  false
end

TimeWithZone का एक उदाहरण TimeWithZone कभी खाली नहीं होता है

परिवर्तन (विकल्प) स्रोत दिखाएँ
# File activesupport/lib/active_support/time_with_zone.rb, line 352
def change(options)
  if options[:zone] && options[:offset]
    raise ArgumentError, "Can't change both :offset and :zone at the same time: #{options.inspect}"
  end

  new_time = time.change(options)

  if options[:zone]
    new_zone = ::Time.find_zone(options[:zone])
  elsif options[:offset]
    new_zone = ::Time.find_zone(new_time.utc_offset)
  end

  new_zone ||= time_zone
  periods = new_zone.periods_for_local(new_time)

  self.class.new(nil, new_zone, new_time, periods.include?(period) ? period : nil)
end

एक नया ActiveSupport::TimeWithZone देता है ActiveSupport::TimeWithZone जहां एक या अधिक तत्वों को options पैरामीटर के अनुसार बदल दिया गया है। समय के विकल्प ( :hour , :min :sec :usec :nsec ) कैस्केडिंग को रीसेट करते हैं, इसलिए यदि केवल घंटे बीत जाता है, तो मिनट, सेकंड, यूईसी और एनएससी को 0. पर सेट किया जाता है। यदि घंटे और मिनट पारित किया जाता है। , तब sec, usec और nsec को 0. पर सेट किया जाता है। options पैरामीटर इनमें से किसी भी कुंजी के साथ हैश लेता है :year , :month :day , :day , :hour , :min :sec :usec :nsec , :offset :zone । या तो पास करें :usec या :nsec , दोनों नहीं। इसी तरह, या तो पास करें :zone या :offset , दोनों नहीं।

t = Time.zone.now          # => Fri, 14 Apr 2017 11:45:15 EST -05:00
t.change(year: 2020)       # => Tue, 14 Apr 2020 11:45:15 EST -05:00
t.change(hour: 12)         # => Fri, 14 Apr 2017 12:00:00 EST -05:00
t.change(min: 30)          # => Fri, 14 Apr 2017 11:30:00 EST -05:00
t.change(offset: "-10:00") # => Fri, 14 Apr 2017 11:45:15 HST -10:00
t.change(zone: "Hawaii")   # => Fri, 14 Apr 2017 11:45:15 HST -10:00
तुलनीय_ समय ()
अन्य के लिए उपनाम: utc
# File activesupport/lib/active_support/time_with_zone.rb, line 95
def dst?
  period.dst?
end

यदि वर्तमान समय डेलाइट सेविंग Time भीतर निर्दिष्ट समय क्षेत्र के लिए है तो यह सही है।

Time.zone = 'Eastern Time (US & Canada)'    # => 'Eastern Time (US & Canada)'
Time.zone.parse("2012-5-30").dst?           # => true
Time.zone.parse("2012-11-30").dst?          # => false
के रूप में भी उपनाम: isdst
# File activesupport/lib/active_support/time_with_zone.rb, line 252
def eql?(other)
  other.eql?(utc)
end

यदि other करंट ऑब्जेक्ट के बराबर true तो true रिटर्न देता true

formatted_offset (colon = true, alternate_utc_string = nil) स्रोत दिखाएं
# File activesupport/lib/active_support/time_with_zone.rb, line 126
def formatted_offset(colon = true, alternate_utc_string = nil)
  utc? && alternate_utc_string || TimeZone.seconds_to_utc_offset(utc_offset, colon)
end

यदि समय क्षेत्र पहले ही UTC है, तो UTC से ऑफ़सेट का एक स्वरूपित स्ट्रिंग, या एक वैकल्पिक स्ट्रिंग लौटाता है।

Time.zone = 'Eastern Time (US & Canada)'   # => "Eastern Time (US & Canada)"
Time.zone.now.formatted_offset(true)       # => "-05:00"
Time.zone.now.formatted_offset(false)      # => "-0500"
Time.zone = 'UTC'                          # => "UTC"
Time.zone.now.formatted_offset(true, "0")  # => "0"
# File activesupport/lib/active_support/time_with_zone.rb, line 479
def freeze
  # preload instance variables before freezing
  period; utc; time; to_datetime; to_time
  super
end
सुपरक्लास विधि कहता है
# File activesupport/lib/active_support/time_with_zone.rb, line 247
def future?
  utc.future?
end

यदि वर्तमान वस्तु का समय भविष्य में है, तो सही है।

गेटम ()
अन्य के लिए उपनाम: utc
getlocal (utc_offset = nil)
इसके लिए उपनाम: localtime
गेटुटेक ()
अन्य के लिए उपनाम: utc
GMT? ()
उपनाम के लिए: utc?
gmt_offset ()
इसके लिए उपनाम: utc_offset
gmtime ()
अन्य के लिए उपनाम: utc
Gmtoff ()
इसके लिए उपनाम: utc_offset
# File activesupport/lib/active_support/time_with_zone.rb, line 256
def hash
  utc.hash
end
# File activesupport/lib/active_support/time_with_zone.rb, line 188
def httpdate
  utc.httpdate
end

HTTP अनुरोध द्वारा उपयोग किए गए प्रारूप में ऑब्जेक्ट की तारीख और समय की एक स्ट्रिंग लौटाता है।

Time.zone.now.httpdate  # => "Tue, 01 Jan 2013 04:39:43 GMT"
(अन्य) में
अन्य के लिए उपनाम: +
in_time_zone (new_zone = :: Time.zone) स्रोत दिखाएँ
# File activesupport/lib/active_support/time_with_zone.rb, line 78
def in_time_zone(new_zone = ::Time.zone)
  return self if time_zone == new_zone
  utc.in_time_zone(new_zone)
end

Time.zone , या निर्दिष्ट क्षेत्र में एक साथ समय देता है।

निरीक्षण () स्रोत दिखाएं
# File activesupport/lib/active_support/time_with_zone.rb, line 141
def inspect
  "#{time.strftime('%a, %d %b %Y %H:%M:%S')} #{zone} #{formatted_offset}"
end

UTC से ऑब्जेक्ट की दिनांक, समय, ज़ोन और ऑफ़सेट का एक स्ट्रिंग लौटाता है।

Time.zone.now.inspect # => "Thu, 04 Dec 2014 11:00:25 EST -05:00"
# File activesupport/lib/active_support/time_with_zone.rb, line 469
def is_a?(klass)
  klass == ::Time || super
end

कहते हैं, हम एक प्रकार की जाँच को विफल करने का Time है।

सुपरक्लास विधि कहता है
के रूप में भी उपनाम: kind_of?
isdst ()
उपनाम के लिए: dst?
iso8601 ( अंश_वित्त = ०)
इसके लिए उपनाम: xmlschema
एक प्रकार का? (klass)
इसके लिए उपनाम: is_a?
स्थानीय समय (utc_offset = nil) स्रोत दिखाएं
# File activesupport/lib/active_support/time_with_zone.rb, line 84
def localtime(utc_offset = nil)
  utc.getlocal(utc_offset)
end

सिस्टम टाइमज़ोन में एक साथ समय का एक Time उदाहरण देता है।

इसके अलावा उपनाम: getlocal
# File activesupport/lib/active_support/time_with_zone.rb, line 485
def marshal_dump
  [utc, time_zone.name, time]
end
# File activesupport/lib/active_support/time_with_zone.rb, line 489
def marshal_load(variables)
  initialize(variables[0].utc, ::Time.find_zone(variables[1]), variables[2].utc)
end
method_missing (सहानुभूति, * आर्ग, और ब्लॉक) स्रोत दिखाएँ
# File activesupport/lib/active_support/time_with_zone.rb, line 510
def method_missing(sym, *args, &block)
  wrap_with_time_zone time.__send__(sym, *args, &block)
rescue NoMethodError => e
  raise e, e.message.sub(time.inspect, inspect), e.backtrace
end

मिसिंग विधि को time उदाहरण के लिए भेजें, और मौजूदा time_zone साथ एक नए TimeWithZone में परिणाम time_zone

# File activesupport/lib/active_support/time_with_zone.rb, line 236
def past?
  utc.past?
end

यदि वर्तमान ऑब्जेक्ट का समय अतीत में है, तो सही है।

# File activesupport/lib/active_support/time_with_zone.rb, line 73
def period
  @period ||= time_zone.period_for_utc(@utc)
end

अंतर्निहित TZInfo :: TimezonePeriod लौटाता है।

का जवाब? (sym, शामिल_priv = false) स्रोत दिखाएं
# File activesupport/lib/active_support/time_with_zone.rb, line 495
def respond_to?(sym, include_priv = false)
  # ensure that we're not going to throw and rescue from NoMethodError in method_missing which is slow
  return false if sym.to_sym == :to_str
  super
end

respond_to_missing? कुछ मामलों में नहीं बुलाया जाता है, जैसे कि जब कर्नेल # स्ट्रिंग के साथ टाइप रूपांतरण किया जाता है

सुपरक्लास विधि कहता है
respond_to_missing? (sym, शामिल_priv) स्रोत दिखाएं
# File activesupport/lib/active_support/time_with_zone.rb, line 503
def respond_to_missing?(sym, include_priv)
  return false if sym.to_sym == :acts_like_date?
  time.respond_to?(sym, include_priv)
end

सुनिश्चित करें कि प्रॉक्सी क्लास उन सभी तरीकों पर प्रतिक्रिया करता है जो अंतर्निहित समय उदाहरण से प्रतिक्रिया करता है।

# File activesupport/lib/active_support/time_with_zone.rb, line 196
def rfc2822
  to_s(:rfc822)
end

RFC 2822 मानक प्रारूप में ऑब्जेक्ट की तारीख और समय की एक स्ट्रिंग लौटाता है।

Time.zone.now.rfc2822  # => "Tue, 01 Jan 2013 04:51:39 +0000"
के रूप में भी उपनाम: rfc822
rfc3339 ( अंश_digits = 0)
इसके लिए उपनाम: xmlschema
rfc822 ()
अन्य के लिए उपनाम: rfc2822
चूंकि (अन्य)
अन्य के लिए उपनाम: +
strftime (प्रारूप) स्रोत दिखाएँ
# File activesupport/lib/active_support/time_with_zone.rb, line 219
def strftime(format)
  format = format.gsub(/((?:\A|[^%])(?:%%)*)%Z/, "\\1#{zone}")
  getlocal(utc_offset).strftime(format)
end

%Z # निर्देश के साथ समय ज़ोन के पास होने से पहले ज़ोन निर्देश को बदल देता है, ताकि ज़ोन की जानकारी सही हो।

# File activesupport/lib/active_support/time_with_zone.rb, line 59
def time
  @time ||= period.to_local(@utc)
end

एक Time उदाहरण लौटाता है जो time_zone में समय का प्रतिनिधित्व करता है।

# File activesupport/lib/active_support/time_with_zone.rb, line 415
def to_a
  [time.sec, time.min, time.hour, time.day, time.mon, time.year, time.wday, time.yday, dst?, zone]
end

[सेकंड, मिनट, घंटे, दिन, महीने, वर्ष, कार्यदिवस, वर्ष, dst ?, क्षेत्र] के क्रम में Time के कुछ हिस्सों की वापसी।

now = Time.zone.now     # => Tue, 18 Aug 2015 02:29:27 UTC +00:00
now.to_a                # => [27, 29, 2, 18, 8, 2015, 2, 230, false, "UTC"]
# File activesupport/lib/active_support/time_with_zone.rb, line 448
def to_datetime
  @to_datetime ||= utc.to_datetime.new_offset(Rational(utc_offset, 86_400))
end

समयक्षेत्र के UTC ऑफसेट के साथ DateTime का एक उदाहरण देता है

Time.zone.now.to_datetime                         # => Tue, 18 Aug 2015 02:32:20 +0000
Time.current.in_time_zone('Hawaii').to_datetime   # => Mon, 17 Aug 2015 16:32:20 -1000
# File activesupport/lib/active_support/time_with_zone.rb, line 423
def to_f
  utc.to_f
end

युग (1 जनवरी, 1970 00:00 यूटीसी) के बाद से ऑब्जेक्ट की तारीख और समय को सेकंड के एक अस्थायी बिंदु के रूप में लौटाता है।

Time.zone.now.to_f # => 1417709320.285418
to_formatted_s (स्वरूप =: डिफ़ॉल्ट)
इसके लिए उपनाम: to_s
# File activesupport/lib/active_support/time_with_zone.rb, line 431
def to_i
  utc.to_i
end

युग (1 जनवरी, 1970 00:00 यूटीसी) के बाद से सेकंड की पूर्णांक संख्या के रूप में ऑब्जेक्ट की तारीख और समय लौटाता है।

Time.zone.now.to_i # => 1417709320
इसके अलावा उपनाम: tv_sec
# File activesupport/lib/active_support/time_with_zone.rb, line 440
def to_r
  utc.to_r
end

युग (1 जनवरी, 1970 00:00 यूटीसी) के बाद से सेकंड की तर्कसंगत संख्या के रूप में ऑब्जेक्ट की तारीख और समय लौटाता है।

Time.zone.now.to_r # => (708854548642709/500000)
to_s (स्वरूप =: डिफ़ॉल्ट) स्रोत दिखाएं
# File activesupport/lib/active_support/time_with_zone.rb, line 206
def to_s(format = :default)
  if format == :db
    utc.to_s(format)
  elsif formatter = ::Time::DATE_FORMATS[format]
    formatter.respond_to?(:call) ? formatter.call(self).to_s : strftime(formatter)
  else
    "#{time.strftime("%Y-%m-%d %H:%M:%S")} #{formatted_offset(false, 'UTC')}" # mimicking Ruby Time#to_s format
  end
end

ऑब्जेक्ट की तारीख और समय का एक स्ट्रिंग लौटाता है। एक वैकल्पिक format स्वीकार format :

  • :default - डिफ़ॉल्ट मान, रूबी Time#to_s प्रारूप की नकल करता है।

  • :db - प्रारूप आउटपुट समय UTC में: db समय। Time#to_formatted_s देखें Time#to_formatted_s (: db)।

  • Time::DATE_FORMATS कोई भी कुंजी Time::DATE_FORMATS का उपयोग किया जा सकता है। सक्रिय_ असमर्थ / core_ext / समय / रूपांतरण देखें .rb

इसके रूप में भी उपनाम: to_formatted_s
# File activesupport/lib/active_support/time_with_zone.rb, line 455
def to_time
  if preserve_timezone
    @to_time_with_instance_offset ||= getlocal(utc_offset)
  else
    @to_time_with_system_offset ||= getlocal
  end
end

ActiveSupport.to_time_preserves_timezone की सेटिंग के आधार पर, self रूप में या स्थानीय सिस्टम ActiveSupport.to_time_preserves_timezone में समान UTC ऑफसेट के साथ, Time का एक उदाहरण देता है।

# File activesupport/lib/active_support/time_with_zone.rb, line 242
def today?
  time.today?
end

यदि वर्तमान वस्तु का समय वर्तमान दिन के भीतर आता है, तो यह सही है।

tv_sec ()
अन्य के लिए उपनाम: to_i
# File activesupport/lib/active_support/time_with_zone.rb, line 64
def utc
  @utc ||= period.to_utc(@time)
end

यूटीसी समय क्षेत्र में एक साथ समय का एक Time उदाहरण देता है।

इसके अलावा उपनाम: getgm , getutc , gmtime , gmtime
यु.टी. सी? () स्रोत दिखाएं
# File activesupport/lib/active_support/time_with_zone.rb, line 106
def utc?
  period.offset.abbreviation == :UTC || period.offset.abbreviation == :UCT
end

यदि वर्तमान समय क्षेत्र UTC पर सेट है, तो यह सही है।

Time.zone = 'UTC'                           # => 'UTC'
Time.zone.now.utc?                          # => true
Time.zone = 'Eastern Time (US & Canada)'    # => 'Eastern Time (US & Canada)'
Time.zone.now.utc?                          # => false
के रूप में भी उपनाम: gmt?
# File activesupport/lib/active_support/time_with_zone.rb, line 112
def utc_offset
  period.utc_total_offset
end

वर्तमान समय से UTC के समय की भरपाई सेकंडों में करता है।

इसके अलावा उपनाम: gmt_offset , gmtoff
xmlschema ( port_digits = 0) स्रोत दिखाएं
# File activesupport/lib/active_support/time_with_zone.rb, line 149
def xmlschema(fraction_digits = 0)
  "#{time.strftime(PRECISIONS[fraction_digits.to_i])}#{formatted_offset(true, 'Z'.freeze)}"
end

आईएसओ 8601 मानक प्रारूप में ऑब्जेक्ट की तारीख और समय की एक स्ट्रिंग लौटाता है।

Time.zone.now.xmlschema  # => "2014-12-04T11:02:37-05:00"
इसके अलावा के रूप में iso8601 : iso8601 , rfc3339
# File activesupport/lib/active_support/time_with_zone.rb, line 134
def zone
  period.zone_identifier.to_s
end

समय क्षेत्र संक्षिप्त नाम देता है।

Time.zone = 'Eastern Time (US & Canada)'   # => "Eastern Time (US & Canada)"
Time.zone.now.zone # => "EST"