Class: DateTime

Inherits:
Date
  • Object
show all
Includes:
DateTimePrecision
Defined in:
lib/date_time_precision/patch/1.8.7/date_time.rb,
lib/date_time_precision/patch/1.9.2/date_time.rb,
lib/date_time_precision/patch/1.9.3/date_time.rb

Constant Summary collapse

MAX_PRECISION =
DateTimePrecision::SEC

Constants included from DateTimePrecision

DateTimePrecision::DATE_ATTRIBUTES, DateTimePrecision::DATE_ATTRIBUTE_PRECISIONS, DateTimePrecision::DAY, DateTimePrecision::FRAC, DateTimePrecision::HOUR, DateTimePrecision::ISO8601_DATE_FRAGMENTS, DateTimePrecision::ISO8601_TIME_FRAGMENTS, DateTimePrecision::MIN, DateTimePrecision::MONTH, DateTimePrecision::NEW_DEFAULTS, DateTimePrecision::NONE, DateTimePrecision::PATCH_VERSION, DateTimePrecision::SEC, DateTimePrecision::VERSION, DateTimePrecision::YEAR

Class Method Summary collapse

Instance Method Summary collapse

Methods included from DateTimePrecision

#as_json, #fragments, included, #partial_match?, precision, #precision, #precision=, #to_h, #to_json

Methods inherited from Date

#utc?, #utc_offset

Class Method Details

.civil(*args) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/date_time_precision/patch/1.8.7/date_time.rb', line 18

def civil(y=nil, m=nil, d=nil, h=nil, min=nil, s=nil, of=0, sg=DateTime::ITALY)
  time_args = [y,m,d,h,min,s]
  precision = self.precision(time_args)
  time_args = normalize_new_args(time_args)

  unless (jd = valid_civil?(time_args[0], time_args[1], time_args[2], sg)) && (fr = valid_time?(time_args[3], time_args[4], time_args[5]))
    raise ArgumentError, 'invalid date'
  end
  if String === of
    of = Rational(zone_to_diff(of) || 0, 86400)
  end
  dt = new!(jd_to_ajd(jd, fr, of), of, sg)
  dt.precision = precision
  dt.attributes_set(y,m,d,h,min,s)
  dt
end

.civil_origObject



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/date_time_precision/patch/1.9.3/date_time.rb', line 29

def civil(y=nil, m=nil, d=nil, h=nil, min=nil, s=nil, of=0, sg=DateTime::ITALY)
  time_args = [y,m,d,h,min,s]
  precision = self.precision(time_args)
  time_args = normalize_new_args(time_args)

  unless (jd = valid_civil?(time_args[0], time_args[1], time_args[2], sg)) && (fr = valid_time?(time_args[3], time_args[4], time_args[5]))
    raise ArgumentError, 'invalid date'
  end
  if String === of
    of = Rational(zone_to_diff(of) || 0, 86400)
  end
  dt = new!(jd_to_ajd(jd, fr, of), of, sg)
  dt.precision = precision
  dt.attributes_set(y,m,d,h,min,s)
  dt
end

.local(*args) ⇒ Object



49
50
51
# File 'lib/date_time_precision/patch/1.8.7/date_time.rb', line 49

def local(*args)
  Time.local(*args).to_datetime
end

.new(*args) ⇒ Object



35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/date_time_precision/patch/1.8.7/date_time.rb', line 35

def civil(y=nil, m=nil, d=nil, h=nil, min=nil, s=nil, of=0, sg=DateTime::ITALY)
  time_args = [y,m,d,h,min,s]
  precision = self.precision(time_args)
  time_args = normalize_new_args(time_args)

  unless (jd = valid_civil?(time_args[0], time_args[1], time_args[2], sg)) && (fr = valid_time?(time_args[3], time_args[4], time_args[5]))
    raise ArgumentError, 'invalid date'
  end
  if String === of
    of = Rational(zone_to_diff(of) || 0, 86400)
  end
  dt = new!(jd_to_ajd(jd, fr, of), of, sg)
  dt.precision = precision
  dt.attributes_set(y,m,d,h,min,s)
  dt
end

.new_origObject



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/date_time_precision/patch/1.9.3/date_time.rb', line 10

def civil(y=nil, m=nil, d=nil, h=nil, min=nil, s=nil, of=0, sg=DateTime::ITALY)
  time_args = [y,m,d,h,min,s]
  precision = self.precision(time_args)
  time_args = normalize_new_args(time_args)

  unless (jd = valid_civil?(time_args[0], time_args[1], time_args[2], sg)) && (fr = valid_time?(time_args[3], time_args[4], time_args[5]))
    raise ArgumentError, 'invalid date'
  end
  if String === of
    of = Rational(zone_to_diff(of) || 0, 86400)
  end
  dt = new!(jd_to_ajd(jd, fr, of), of, sg)
  dt.precision = precision
  dt.attributes_set(y,m,d,h,min,s)
  dt
end

.parse(str = '-4712-01-01T00:00:00+00:00', now = self.now) ⇒ Object



10
11
12
13
14
15
16
# File 'lib/date_time_precision/patch/1.8.7/date_time.rb', line 10

def parse(str='-4712-01-01T00:00:00+00:00', comp=false, sg=DateTime::ITALY)
  elem = _parse(str, comp)
  precision = DateTimePrecision::precision(elem)
  dt = new_by_frags(elem, sg)
  dt.precision = precision
  dt
end

.parse_origObject



19
20
21
22
23
24
25
# File 'lib/date_time_precision/patch/1.9.3/date_time.rb', line 19

def parse(str='-4712-01-01T00:00:00+00:00', comp=false, sg=DateTime::ITALY)
  elem = _parse(str, comp)
  precision = DateTimePrecision::precision(elem)
  dt = new_by_frags(elem, sg)
  dt.precision = precision
  dt
end

.strptime(date, format = '%F', start = Date::ITALY) ⇒ Object



37
38
39
40
41
42
43
# File 'lib/date_time_precision/patch/1.8.7/date_time.rb', line 37

def strptime(str='-4712-01-01', fmt='%F', sg=DateTime::ITALY)
  elem = _strptime(str, fmt)
  precision = DateTimePrecision::precision(elem)
  d = new_by_frags(elem, sg)
  d.precision = precision
  d
end

.strptime_origObject



41
42
43
44
45
46
47
# File 'lib/date_time_precision/patch/1.9.3/date_time.rb', line 41

def strptime(str='-4712-01-01', fmt='%F', sg=DateTime::ITALY)
  elem = _strptime(str, fmt)
  precision = DateTimePrecision::precision(elem)
  d = new_by_frags(elem, sg)
  d.precision = precision
  d
end

.utc(*args) ⇒ Object



45
46
47
# File 'lib/date_time_precision/patch/1.8.7/date_time.rb', line 45

def utc(*args)
  Time.utc(*args).to_datetime
end

Instance Method Details

#utcObject



54
55
56
# File 'lib/date_time_precision/patch/1.8.7/date_time.rb', line 54

def utc
  self.to_time.utc.to_datetime
end