Ruby on Rails 5.2 - DateTime

क्लास डेटाइम




ruby

क्लास डेटाइम

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

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

Civil_from_format (utc_or_local, वर्ष, महीना = 1, दिन = 1, घंटा = 0, मिनट = 0, सेकंड = 0) दिखाएँ स्रोत
# File activesupport/lib/active_support/core_ext/date_time/conversions.rb, line 69
def self.civil_from_format(utc_or_local, year, month = 1, day = 1, hour = 0, min = 0, sec = 0)
  if utc_or_local.to_sym == :local
    offset = ::Time.local(year, month, day).utc_offset.to_r / 86400
  else
    offset = 0
  end
  civil(year, month, day, hour, min, sec, offset)
end

यदि प्रारूप स्थानीय है तो ऑफ़सेट वर्ष के लिए स्थानीय DateTime साथ DateTime पर शून्य है।

DateTime.civil_from_format :local, 2012
# => Sun, 01 Jan 2012 00:00:00 +0300
DateTime.civil_from_format :local, 2012, 12, 17
# => Mon, 17 Dec 2012 00:00:00 +0000
वर्तमान () स्रोत दिखाएं
# File activesupport/lib/active_support/core_ext/date_time/calculations.rb, line 10
def current
  ::Time.zone ? ::Time.zone.now.to_datetime : ::Time.now.to_datetime
end

Time.zone.now.to_datetime लौटाता है जब Time.zone या config.time_zone सेट हो जाता है, अन्यथा config.time_zone वापस आ जाता Time.now.to_datetime

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

# File activesupport/lib/active_support/core_ext/date_time/calculations.rb, line 204
def <=>(other)
  if other.respond_to? :to_datetime
    super other.to_datetime rescue nil
  else
    super
  end
end

DateTime पर अतिरिक्त व्यवहार की परतें # <=> ताकि Time और ActiveSupport::TimeWithZone उदाहरणों की तुलना DateTime साथ की जा सके।

सुपरक्लास विधि कहता है
# File activesupport/lib/active_support/core_ext/date_time/acts_like.rb, line 8
def acts_like_date?
  true
end

बत्तख-प्रकार एक तारीख जैसी कक्षा के रूप में। Object#acts_like? देखें Object#acts_like?

# File activesupport/lib/active_support/core_ext/date_time/acts_like.rb, line 13
def acts_like_time?
  true
end

एक समय जैसी कक्षा के रूप में बतख-प्रकार। Object#acts_like? देखें Object#acts_like?

अग्रिम (विकल्प) दिखाएँ स्रोत
# File activesupport/lib/active_support/core_ext/date_time/calculations.rb, line 78
def advance(options)
  unless options[:weeks].nil?
    options[:weeks], partial_weeks = options[:weeks].divmod(1)
    options[:days] = options.fetch(:days, 0) + 7 * partial_weeks
  end

  unless options[:days].nil?
    options[:days], partial_days = options[:days].divmod(1)
    options[:hours] = options.fetch(:hours, 0) + 24 * partial_days
  end

  d = to_date.advance(options)
  datetime_advanced_by_date = change(year: d.year, month: d.month, day: d.day)
  seconds_to_advance = \
    options.fetch(:seconds, 0) +
    options.fetch(:minutes, 0) * 60 +
    options.fetch(:hours, 0) * 3600

  if seconds_to_advance.zero?
    datetime_advanced_by_date
  else
    datetime_advanced_by_date.since(seconds_to_advance)
  end
end

वर्षों, महीनों और दिनों के लिए सटीक Time गणना प्रदान करने के लिए Date का उपयोग करता है। options पैरामीटर इनमें से किसी भी कुंजी के साथ एक हैश लेता है :years :months , :weeks , :days , :days :minutes :seconds

पहले (सेकंड) स्रोत दिखाएँ
# File activesupport/lib/active_support/core_ext/date_time/calculations.rb, line 105
def ago(seconds)
  since(-seconds)
end

एक नया DateTime एक सेकंड पहले समय का प्रतिनिधित्व करता है। इस विधि का उपयोग x.months के साथ संयोजन में न करें, इसके बजाय महीनों_का उपयोग करें!

at_beginning_of_day ()
अन्य के लिए उपनाम: beginning_of_day
at_beginning_of_hour ()
इसके लिए उपनाम: beginning_of_hour
at_beginning_of_minute ()
इसके लिए उपनाम: beginning_of_minute
at_end_of_day ()
अन्य के लिए उपनाम: end_of_day
at_end_of_hour ()
इसके लिए उपनाम: end_of_hour
at_end_of_minute ()
इसके लिए उपनाम: end_of_minute
at_midday ()
अन्य के लिए उपनाम: middle_of_day
at_middle_of_day ()
अन्य के लिए उपनाम: middle_of_day
at_midnight ()
अन्य के लिए उपनाम: beginning_of_day
at_noon ()
अन्य के लिए उपनाम: middle_of_day
शुरुआत_ऑफ_डे () स्रोत दिखाएं
# File activesupport/lib/active_support/core_ext/date_time/calculations.rb, line 118
def beginning_of_day
  change(hour: 0)
end

दिन की शुरुआत (0:00) का प्रतिनिधित्व करने वाला एक नया DateTime लौटाता है।

इसके अलावा at_midnight रूप में: midnight , at_midnight , at_beginning_of_day
शुरुआत_ऑफ_होर () स्रोत दिखाएं
# File activesupport/lib/active_support/core_ext/date_time/calculations.rb, line 142
def beginning_of_hour
  change(min: 0)
end

घंटे की शुरुआत का प्रतिनिधित्व करने वाला एक नया DateTime लौटाता है (hh: 00: 00)।

इसके रूप में भी उपनाम: at_beginning_of_hour
शुरुआत_ऑफ़_ मिनट () स्रोत दिखाएं
# File activesupport/lib/active_support/core_ext/date_time/calculations.rb, line 154
def beginning_of_minute
  change(sec: 0)
end

मिनट की शुरुआत का प्रतिनिधित्व करने वाला एक नया DateTime लौटाता है (hh: mm: 00)।

इसके रूप में भी उपनाम: at_beginning_of_minute
परिवर्तन (विकल्प) स्रोत दिखाएँ
# File activesupport/lib/active_support/core_ext/date_time/calculations.rb, line 51
def change(options)
  if new_nsec = options[:nsec]
    raise ArgumentError, "Can't change both :nsec and :usec at the same time: #{options.inspect}" if options[:usec]
    new_fraction = Rational(new_nsec, 1000000000)
  else
    new_usec = options.fetch(:usec, (options[:hour] || options[:min] || options[:sec]) ? 0 : Rational(nsec, 1000))
    new_fraction = Rational(new_usec, 1000000)
  end

  raise ArgumentError, "argument out of range" if new_fraction >= 1

  ::DateTime.civil(
    options.fetch(:year, year),
    options.fetch(:month, month),
    options.fetch(:day, day),
    options.fetch(:hour, hour),
    options.fetch(:min, options[:hour] ? 0 : min),
    options.fetch(:sec, (options[:hour] || options[:min]) ? 0 : sec) + new_fraction,
    options.fetch(:offset, offset),
    options.fetch(:start, start)
  )
end

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

DateTime.new(2012, 8, 29, 22, 35, 0).change(day: 1)              # => DateTime.new(2012, 8, 1, 22, 35, 0)
DateTime.new(2012, 8, 29, 22, 35, 0).change(year: 1981, day: 1)  # => DateTime.new(1981, 8, 1, 22, 35, 0)
DateTime.new(2012, 8, 29, 22, 35, 0).change(year: 1981, hour: 0) # => DateTime.new(1981, 8, 29, 0, 0, 0)
default_inspect ()
के लिए उपनाम: inspect
# File activesupport/lib/active_support/core_ext/date_time/calculations.rb, line 136
def end_of_day
  change(hour: 23, min: 59, sec: 59, usec: Rational(999999999, 1000))
end

दिन के अंत (23:59:59) का प्रतिनिधित्व करते हुए एक नया डेटाइम लौटाता है।

इसके रूप में भी उपनाम: at_end_of_day
# File activesupport/lib/active_support/core_ext/date_time/calculations.rb, line 148
def end_of_hour
  change(min: 59, sec: 59, usec: Rational(999999999, 1000))
end

घंटे के अंत का प्रतिनिधित्व करने वाला एक नया DateTime लौटाता है (hh: 59: 59)।

इसके रूप में भी उपनाम: at_end_of_hour
# File activesupport/lib/active_support/core_ext/date_time/calculations.rb, line 160
def end_of_minute
  change(sec: 59, usec: Rational(999999999, 1000))
end

मिनट के अंत का प्रतिनिधित्व करने वाला एक नया DateTime लौटाता है (hh: mm: 59)।

इसके रूप में भी उपनाम: at_end_of_minute
formatted_offset (colon = true, alternate_utc_string = nil) स्रोत दिखाएं
# File activesupport/lib/active_support/core_ext/date_time/conversions.rb, line 51
def formatted_offset(colon = true, alternate_utc_string = nil)
  utc? && alternate_utc_string || ActiveSupport::TimeZone.seconds_to_utc_offset(utc_offset, colon)
end

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

datetime = DateTime.civil(2000, 1, 1, 0, 0, 0, Rational(-6, 24))
datetime.formatted_offset         # => "-06:00"
datetime.formatted_offset(false)  # => "-0600"
गेटम ()
अन्य के लिए उपनाम: utc
getlocal (utc_offset = nil)
इसके लिए उपनाम: localtime
गेटुटेक ()
अन्य के लिए उपनाम: utc
gmtime ()
अन्य के लिए उपनाम: utc
(सेकंड में)
के लिए उपनाम: के since
निरीक्षण ()
इसके रूप में भी उपनाम: default_inspect
अन्य के लिए उपनाम: readable_inspect
स्थानीय समय (utc_offset = nil) स्रोत दिखाएं
# File activesupport/lib/active_support/core_ext/date_time/calculations.rb, line 166
def localtime(utc_offset = nil)
  utc = new_offset(0)

  Time.utc(
    utc.year, utc.month, utc.day,
    utc.hour, utc.min, utc.sec + utc.sec_fraction
  ).getlocal(utc_offset)
end

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

इसके अलावा उपनाम: getlocal
मध्याह्न ()
अन्य के लिए उपनाम: middle_of_day
# File activesupport/lib/active_support/core_ext/date_time/calculations.rb, line 126
def middle_of_day
  change(hour: 12)
end

दिन के मध्य का प्रतिनिधित्व करने वाला एक नया DateTime लौटाता है (12:00)

इसके अलावा उपनाम के रूप में: midday , noon , at_midday , at_noon , at_middle_of_day
आधी रात ()
अन्य के लिए उपनाम: beginning_of_day
दोपहर ()
अन्य के लिए उपनाम: middle_of_day
# File activesupport/lib/active_support/core_ext/date_time/conversions.rb, line 94
def nsec
  (sec_fraction * 1_000_000_000).to_i
end

एक दूसरे के अंश को नैनोसेकंड के रूप में लौटाता है

# File activesupport/lib/active_support/core_ext/date_time/conversions.rb, line 56
def readable_inspect
  to_s(:rfc822)
end

मानव पठनीय एक के साथ डिफ़ॉल्ट निरीक्षण विधि को ओवरराइड करता है, जैसे, "सोम, 21 फरवरी 2005 14:30:00 +0000"।

के रूप में भी inspect किया: inspect
seconds_since_midnight () स्रोत दिखाएं
# File activesupport/lib/active_support/core_ext/date_time/calculations.rb, line 20
def seconds_since_midnight
  sec + (min * 60) + (hour * 3600)
end

00:00:00 के बाद से सेकंड की संख्या देता है।

DateTime.new(2012, 8, 29,  0,  0,  0).seconds_since_midnight # => 0
DateTime.new(2012, 8, 29, 12, 34, 56).seconds_since_midnight # => 45296
DateTime.new(2012, 8, 29, 23, 59, 59).seconds_since_midnight # => 86399
seconds_until_end_of_day () स्रोत दिखाएं
# File activesupport/lib/active_support/core_ext/date_time/calculations.rb, line 29
def seconds_until_end_of_day
  end_of_day.to_i - to_i
end

23:59:59 तक सेकंड की संख्या देता है।

DateTime.new(2012, 8, 29,  0,  0,  0).seconds_until_end_of_day # => 86399
DateTime.new(2012, 8, 29, 12, 34, 56).seconds_until_end_of_day # => 41103
DateTime.new(2012, 8, 29, 23, 59, 59).seconds_until_end_of_day # => 0
चूंकि (सेकंड) स्रोत दिखाएं
# File activesupport/lib/active_support/core_ext/date_time/calculations.rb, line 112
def since(seconds)
  self + Rational(seconds.round, 86400)
end

एक नया DateTime उदाहरण समय के बाद से कई सेकंड का समय देता है। इस विधि का उपयोग x.months के साथ संयोजन में न करें, इसके बजाय महीनों_ का उपयोग करें!

इसके अलावा उर्फ: के रूप in
# File activesupport/lib/active_support/core_ext/date_time/calculations.rb, line 36
def subsec
  sec_fraction
end

दूसरे के अंश को Rational रूप में लौटाता है

DateTime.new(2012, 8, 29, 0, 0, 0.5).subsec # => (1/2)
to_default_s (प्रारूप =: डिफ़ॉल्ट)
इसके लिए उपनाम: to_s
# File activesupport/lib/active_support/core_ext/date_time/conversions.rb, line 79
def to_f
  seconds_since_unix_epoch.to_f + sec_fraction
end

यूनिक्स युग के बाद से, आंशिक microseconds सहित, एक अस्थायी बिंदु की संख्या के लिए self को परिवर्तित करता है।

to_formatted_s (स्वरूप =: डिफ़ॉल्ट) स्रोत दिखाएं
# File activesupport/lib/active_support/core_ext/date_time/conversions.rb, line 35
def to_formatted_s(format = :default)
  if formatter = ::Time::DATE_FORMATS[format]
    formatter.respond_to?(:call) ? formatter.call(self).to_s : strftime(formatter)
  else
    to_default_s
  end
end

एक स्वरूपित स्ट्रिंग में कनवर्ट करें। समय देखें :: पूर्वनिर्धारित स्वरूपों के लिए DATE_FORMATS।

यह विधि to_s लिए aliased है।

उदाहरण

datetime = DateTime.civil(2007, 12, 4, 0, 0, 0, 0)   # => Tue, 04 Dec 2007 00:00:00 +0000

datetime.to_formatted_s(:db)            # => "2007-12-04 00:00:00"
datetime.to_s(:db)                      # => "2007-12-04 00:00:00"
datetime.to_s(:number)                  # => "20071204000000"
datetime.to_formatted_s(:short)         # => "04 Dec 00:00"
datetime.to_formatted_s(:long)          # => "December 04, 2007 00:00"
datetime.to_formatted_s(:long_ordinal)  # => "December 4th, 2007 00:00"
datetime.to_formatted_s(:rfc822)        # => "Tue, 04 Dec 2007 00:00:00 +0000"
datetime.to_formatted_s(:iso8601)       # => "2007-12-04T00:00:00+00:00"

#to_formatted_s अपने स्वयं के #to_formatted_s स्वरूपों को #to_formatted_s

DateTime प्रारूप Time साथ साझा किए जाते हैं। आप अपना समय :: DATE_FORMATS हैश में जोड़ सकते हैं। हैश कुंजी के रूप में प्रारूप नाम का उपयोग करें और या तो एक स्ट्रिंग स्ट्रिंग या प्रोक उदाहरण है जो मान के रूप में समय या डेटाटाइम तर्क लेता है।

# config/initializers/time_formats.rb
Time::DATE_FORMATS[:month_and_year] = '%B %Y'
Time::DATE_FORMATS[:short_ordinal] = lambda { |time| time.strftime("%B #{time.day.ordinalize}") }
के रूप में भी उपनाम: to_s
# File activesupport/lib/active_support/core_ext/date_time/conversions.rb, line 84
def to_i
  seconds_since_unix_epoch.to_i
end

यूनिक्स युग के बाद से सेकंड के एक पूर्णांक संख्या के लिए self को परिवर्तित करता है।

to_s (प्रारूप =: डिफ़ॉल्ट)
साथ ही: to_default_s
इसके लिए उपनाम: #to_formatted_s
# File activesupport/lib/active_support/core_ext/date_time/compatibility.rb, line 15
def to_time
  preserve_timezone ? getlocal(utc_offset) : getlocal
end

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

# File activesupport/lib/active_support/core_ext/date_time/conversions.rb, line 89
def usec
  (sec_fraction * 1_000_000).to_i
end

माइक्रोसेकंड के रूप में एक दूसरे का अंश लौटाता है

# File activesupport/lib/active_support/core_ext/date_time/calculations.rb, line 180
def utc
  utc = new_offset(0)

  Time.utc(
    utc.year, utc.month, utc.day,
    utc.hour, utc.min, utc.sec + utc.sec_fraction
  )
end

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

DateTime.civil(2005, 2, 21, 10, 11, 12, Rational(-6, 24))     # => Mon, 21 Feb 2005 10:11:12 -0600
DateTime.civil(2005, 2, 21, 10, 11, 12, Rational(-6, 24)).utc # => Mon, 21 Feb 2005 16:11:12 UTC
के रूप में भी उपनाम: getgm , getutc , gmtime
यु.टी. सी? () स्रोत दिखाएं
# File activesupport/lib/active_support/core_ext/date_time/calculations.rb, line 193
def utc?
  offset == 0
end

अगर offset == 0 true

# File activesupport/lib/active_support/core_ext/date_time/calculations.rb, line 198
def utc_offset
  (offset * 86400).to_i
end

सेकंड में ऑफ़सेट मान लौटाता है।