method
+

Related methods
- Class methods (100)
-
ajd_to_amjd (<= v1_8_7_330)
-
ajd_to_jd (<= v1_8_7_330)
-
amjd_to_ajd (<= v1_8_7_330)
-
civil
-
civil_to_jd (<= v1_8_7_330)
-
commercial
-
commercial_to_jd (<= v1_8_7_330)
-
complete_frags
(<= v1_9_2_180)
-
day_fraction_to_time (<= v1_8_7_330)
-
deprecated_alias
(<= v1_8_7_330)
-
deprecated_class_method_alias
(<= v1_8_7_330)
-
fix_style
(<= v1_8_7_330)
-
gregorian? (<= v1_8_7_330)
-
gregorian_leap?
-
httpdate
-
_httpdate
-
iso8601
-
_iso8601
-
jd
-
jd_to_ajd (<= v1_8_7_330)
-
jd_to_civil (<= v1_8_7_330)
-
jd_to_commercial (<= v1_8_7_330)
-
jd_to_ld (<= v1_8_7_330)
-
jd_to_mjd (<= v1_8_7_330)
-
jd_to_ordinal (<= v1_8_7_330)
-
jd_to_wday (<= v1_8_7_330)
-
jd_to_weeknum
(<= v1_8_7_330)
-
jisx0301
-
_jisx0301
-
json_create
-
julian? (<= v1_8_7_330)
-
julian_leap?
-
ld_to_jd (<= v1_8_7_330)
-
leap?
-
_load (>= v1_8_6_287)
-
mjd_to_jd (<= v1_8_7_330)
-
new
-
new! (>= v1_9_1_378)
-
new_by_frags
(<= v1_9_2_180)
-
now
(<= v1_9_2_180)
-
nth_kday
(>= v1_9_1_378)
-
num_pattern?
(<= v1_9_2_180)
-
once
(<= v1_9_2_180)
-
ordinal
-
ordinal_to_jd (<= v1_8_7_330)
-
parse
-
_parse
-
_parse_beat
(<= v1_8_6_287)
-
_parse_day
(<= v1_9_2_180)
-
_parse_ddd
(<= v1_9_2_180)
-
_parse_dot
(<= v1_9_2_180)
-
_parse_eu
(<= v1_9_2_180)
-
_parse_iso
(<= v1_9_2_180)
-
_parse_iso2
(<= v1_9_2_180)
-
_parse_jis
(<= v1_9_2_180)
-
_parse_mday
(<= v1_9_2_180)
-
_parse_mon
(<= v1_9_2_180)
-
_parse_sla
(<= v1_9_2_180)
-
_parse_sla_eu
(<= v1_8_6_287)
-
_parse_sla_ja
(<= v1_8_6_287)
-
_parse_sla_us
(<= v1_8_6_287)
-
_parse_time
(<= v1_9_2_180)
-
_parse_us
(<= v1_9_2_180)
-
_parse_vms
(<= v1_9_2_180)
-
_parse_year
(<= v1_9_2_180)
-
rewrite_frags
(<= v1_9_2_180)
-
rfc2822
-
_rfc2822
-
rfc3339
-
_rfc3339
-
rfc822
-
_rfc822
-
s3e
(<= v1_9_2_180)
-
strptime
-
_strptime
-
_strptime_i
(<= v1_9_2_180)
-
test_all (>= v2_6_3)
-
test_civil (>= v2_6_3)
-
test_commercial (>= v2_6_3)
-
test_nth_kday (>= v2_6_3)
-
test_ordinal (>= v2_6_3)
-
test_unit_conv (>= v2_6_3)
-
test_weeknum (>= v2_6_3)
-
time_to_day_fraction (<= v1_8_7_330)
-
today
-
valid_civil?
-
valid_commercial?
-
valid_date?
-
valid_date_frags?
(<= v1_9_2_180)
-
valid_jd?
-
valid_nth_kday?
(<= v1_9_2_180)
-
valid_ordinal?
-
valid_time?
(<= v1_9_2_180)
-
valid_time_frags?
(<= v1_9_2_180)
-
valid_weeknum?
(<= v1_9_2_180)
-
weeknum
(>= v1_8_6_287)
-
weeknum_to_jd
(<= v1_8_7_330)
-
xmlschema
-
_xmlschema
-
zone_to_diff (<= v1_8_7_330)
- Instance methods (167)
-
<<
-
<=>
-
== (<= v1_9_2_180)
-
===
-
>>
-
-
-
-@ (<= v1_9_2_180)
-
/ (<= v1_9_2_180)
-
* (<= v1_9_2_180)
-
** (<= v1_9_2_180)
-
% (<= v1_9_2_180)
-
+
-
+@ (<= v1_9_2_180)
-
abs (<= v1_9_2_180)
-
ajd
-
ajd_to_amjd (<= v1_9_2_180)
-
ajd_to_jd (<= v1_9_2_180)
-
amjd
-
amjd_to_ajd (<= v1_9_2_180)
-
asctime
-
as_json
-
ceil (<= v1_9_2_180)
-
civil
(<= v1_9_2_180)
-
civil_to_jd (<= v1_9_2_180)
-
coerce (<= v1_9_2_180)
-
commercial
(<= v1_9_2_180)
-
commercial_to_jd (<= v1_9_2_180)
-
ctime
-
cwday
-
cweek
-
cwyear
-
day
-
day_fraction
-
day_fraction_to_time (<= v1_9_2_180)
-
div (<= v1_9_2_180)
-
divmod (<= v1_9_2_180)
-
downto
-
_dump (<= v1_8_7_330)
-
dx_addsub
(<= v1_9_2_180)
-
dx_conv0
(<= v1_9_2_180)
-
dx_conv1
(<= v1_9_2_180)
-
dx_muldiv
(<= v1_9_2_180)
-
emit
(<= v1_9_2_180)
-
emit_a
(<= v1_9_2_180)
-
emit_ad
(<= v1_9_2_180)
-
emit_au
(<= v1_9_2_180)
-
emit_n
(<= v1_9_2_180)
-
emit_sn
(<= v1_9_2_180)
-
emit_w
(<= v1_9_2_180)
-
emit_z
(<= v1_9_2_180)
-
england
-
eql?
-
fill (>= v2_6_3)
-
find_fdom (<= v1_9_2_180)
-
find_fdoy (<= v1_9_2_180)
-
find_ldom (<= v1_9_2_180)
-
find_ldoy (<= v1_9_2_180)
-
fix_style
(<= v1_9_2_180)
-
floor (<= v1_9_2_180)
-
friday?
-
gregorian
-
gregorian?
-
hash
-
hour
-
httpdate
-
initialize_copy
-
inspect
-
inspect_raw (>= v2_6_3)
-
integer? (<= v1_9_2_180)
-
iso8601
-
italy
-
jd
-
jd_to_ajd (<= v1_9_2_180)
-
jd_to_civil (<= v1_9_2_180)
-
jd_to_commercial (<= v1_9_2_180)
-
jd_to_ld (<= v1_9_2_180)
-
jd_to_mjd (<= v1_9_2_180)
-
jd_to_nth_kday (<= v1_9_2_180)
-
jd_to_ordinal (<= v1_9_2_180)
-
jd_to_wday (<= v1_9_2_180)
-
jd_to_weeknum (<= v1_9_2_180)
-
jisx0301
-
julian
-
julian?
-
ld
-
ld_to_jd (<= v1_9_2_180)
-
leap?
-
marshal_dump
-
marshal_dump_old (>= v2_6_3)
-
marshal_load
-
mday
-
min
-
minute
-
mjd
-
mjd_to_jd (<= v1_9_2_180)
-
modulo (<= v1_9_2_180)
-
mon
-
monday?
-
month
-
new_offset
-
new_start
-
next
-
next_day
-
next_month
-
next_year
-
nth_kday?
(>= v1_9_1_378)
-
nth_kday_to_jd (<= v1_9_2_180)
-
offset
-
ordinal
(<= v1_9_2_180)
-
ordinal_to_jd (<= v1_9_2_180)
-
prev_day
-
prev_month
-
prev_year
-
quo (<= v1_9_2_180)
-
quotient (<= v1_9_2_180)
-
quotrem (<= v1_9_2_180)
-
remainder (<= v1_9_2_180)
-
rfc2822
-
rfc3339
-
rfc822
-
round (<= v1_9_2_180)
-
saturday?
-
sec
-
sec_fraction
-
second
-
second_fraction
-
start
-
step
-
strftime
-
succ
-
sunday?
-
thursday?
-
time
(<= v1_9_2_180)
-
time_to_day_fraction (<= v1_9_2_180)
-
to_c (<= v1_9_2_180)
-
to_date
-
to_datetime
-
to_f (<= v1_9_2_180)
-
to_i (<= v1_9_2_180)
-
to_int (<= v1_9_2_180)
-
to_json
-
to_r (<= v1_9_2_180)
-
to_s
-
to_time
-
to_yaml (<= v1_9_1_378)
-
truncate (<= v1_9_2_180)
-
tuesday?
-
upto
-
_valid_civil? (<= v1_9_2_180)
-
_valid_commercial? (<= v1_9_2_180)
-
_valid_jd? (<= v1_9_2_180)
-
_valid_nth_kday? (<= v1_9_2_180)
-
_valid_ordinal? (<= v1_9_2_180)
-
_valid_time? (<= v1_9_2_180)
-
_valid_weeknum? (<= v1_9_2_180)
-
wday
-
wednesday?
-
weeknum0
(<= v1_9_2_180)
-
weeknum1
(<= v1_9_2_180)
-
weeknum_to_jd (<= v1_9_2_180)
-
wnum0
(>= v1_8_6_287)
-
wnum1
(>= v1_8_6_287)
-
xmlschema
-
yday
-
year
-
zone
-
zone_to_diff (<= v1_9_2_180)
= private
= protected
+(p1)
public
Returns a date object pointing other days after self. The other should be a numeric value. If the other is flonum, assumes its precision is at most nanosecond.
For example:
Date.new(2001,2,3) + 1 #=> #<Date: 2001-02-04 ...> DateTime.new(2001,2,3) + Rational(1,2) #=> #<DateTime: 2001-02-03T12:00:00+00:00 ...> DateTime.new(2001,2,3) + Rational(-1,2) #=> #<DateTime: 2001-02-02T12:00:00+00:00 ...> DateTime.jd(0,12) + DateTime.new(2001,2,3).ajd #=> #<DateTime: 2001-02-03T00:00:00+00:00 ...>
Show source
static VALUE d_lite_plus(VALUE self, VALUE other) { get_d1(self); switch (TYPE(other)) { case T_FIXNUM: { VALUE nth; long t; int jd; nth = m_nth(dat); t = FIX2LONG(other); if (DIV(t, CM_PERIOD)) { nth = f_add(nth, INT2FIX(DIV(t, CM_PERIOD))); t = MOD(t, CM_PERIOD); } if (!t) jd = m_jd(dat); else { jd = m_jd(dat) + (int)t; if (jd < 0) { nth = f_sub(nth, INT2FIX(1)); jd += CM_PERIOD; } else if (jd >= CM_PERIOD) { nth = f_add(nth, INT2FIX(1)); jd -= CM_PERIOD; } } if (simple_dat_p(dat)) return d_simple_new_internal(rb_obj_class(self), nth, jd, dat->s.sg, 0, 0, 0, (dat->s.flags | HAVE_JD) & ~HAVE_CIVIL); else return d_complex_new_internal(rb_obj_class(self), nth, jd, dat->c.df, dat->c.sf, dat->c.of, dat->c.sg, 0, 0, 0, #ifndef USE_PACK dat->c.hour, dat->c.min, dat->c.sec, #else EX_HOUR(dat->c.pc), EX_MIN(dat->c.pc), EX_SEC(dat->c.pc), #endif (dat->c.flags | HAVE_JD) & ~HAVE_CIVIL); } break; case T_BIGNUM: { VALUE nth; int jd, s; if (f_positive_p(other)) s = +1; else { s = -1; other = f_negate(other); } nth = f_idiv(other, INT2FIX(CM_PERIOD)); jd = FIX2INT(f_mod(other, INT2FIX(CM_PERIOD))); if (s < 0) { nth = f_negate(nth); jd = -jd; } if (!jd) jd = m_jd(dat); else { jd = m_jd(dat) + jd; if (jd < 0) { nth = f_sub(nth, INT2FIX(1)); jd += CM_PERIOD; } else if (jd >= CM_PERIOD) { nth = f_add(nth, INT2FIX(1)); jd -= CM_PERIOD; } } if (f_zero_p(nth)) nth = m_nth(dat); else nth = f_add(m_nth(dat), nth); if (simple_dat_p(dat)) return d_simple_new_internal(rb_obj_class(self), nth, jd, dat->s.sg, 0, 0, 0, (dat->s.flags | HAVE_JD) & ~HAVE_CIVIL); else return d_complex_new_internal(rb_obj_class(self), nth, jd, dat->c.df, dat->c.sf, dat->c.of, dat->c.sg, 0, 0, 0, #ifndef USE_PACK dat->c.hour, dat->c.min, dat->c.sec, #else EX_HOUR(dat->c.pc), EX_MIN(dat->c.pc), EX_SEC(dat->c.pc), #endif (dat->c.flags | HAVE_JD) & ~HAVE_CIVIL); } break; case T_FLOAT: { double jd, o, tmp; int s, df; VALUE nth, sf; o = RFLOAT_VALUE(other); if (o > 0) s = +1; else { s = -1; o = -o; } o = modf(o, &tmp); if (!floor(tmp / CM_PERIOD)) { nth = INT2FIX(0); jd = (int)tmp; } else { double i, f; f = modf(tmp / CM_PERIOD, &i); nth = f_floor(DBL2NUM(i)); jd = (int)(f * CM_PERIOD); } o *= DAY_IN_SECONDS; o = modf(o, &tmp); df = (int)tmp; o *= SECOND_IN_NANOSECONDS; sf = INT2FIX((int)round(o)); if (s < 0) { jd = -jd; df = -df; sf = f_negate(sf); } if (f_zero_p(sf)) sf = m_sf(dat); else { sf = f_add(m_sf(dat), sf); if (f_lt_p(sf, INT2FIX(0))) { df -= 1; sf = f_add(sf, INT2FIX(SECOND_IN_NANOSECONDS)); } else if (f_ge_p(sf, INT2FIX(SECOND_IN_NANOSECONDS))) { df += 1; sf = f_sub(sf, INT2FIX(SECOND_IN_NANOSECONDS)); } } if (!df) df = m_df(dat); else { df = m_df(dat) + df; if (df < 0) { jd -= 1; df += DAY_IN_SECONDS; } else if (df >= DAY_IN_SECONDS) { jd += 1; df -= DAY_IN_SECONDS; } } if (!jd) jd = m_jd(dat); else { jd = m_jd(dat) + jd; if (jd < 0) { nth = f_sub(nth, INT2FIX(1)); jd += CM_PERIOD; } else if (jd >= CM_PERIOD) { nth = f_add(nth, INT2FIX(1)); jd -= CM_PERIOD; } } if (f_zero_p(nth)) nth = m_nth(dat); else nth = f_add(m_nth(dat), nth); if (!df && f_zero_p(sf) && !m_of(dat)) return d_simple_new_internal(rb_obj_class(self), nth, (int)jd, m_sg(dat), 0, 0, 0, (dat->s.flags | HAVE_JD) & ~(HAVE_CIVIL | HAVE_TIME | COMPLEX_DAT)); else return d_complex_new_internal(rb_obj_class(self), nth, (int)jd, df, sf, m_of(dat), m_sg(dat), 0, 0, 0, 0, 0, 0, (dat->c.flags | HAVE_JD | HAVE_DF) & ~(HAVE_CIVIL | HAVE_TIME)); } break; default: if (!k_numeric_p(other)) rb_raise(rb_eTypeError, "expected numeric"); other = f_to_r(other); #ifdef CANONICALIZATION_FOR_MATHN if (!k_rational_p(other)) return d_lite_plus(self, other); #endif /* fall through */ case T_RATIONAL: { VALUE nth, sf, t; int jd, df, s; if (wholenum_p(other)) return d_lite_plus(self, RRATIONAL(other)->num); if (f_positive_p(other)) s = +1; else { s = -1; other = f_negate(other); } nth = f_idiv(other, INT2FIX(CM_PERIOD)); t = f_mod(other, INT2FIX(CM_PERIOD)); jd = FIX2INT(f_idiv(t, INT2FIX(1))); t = f_mod(t, INT2FIX(1)); t = f_mul(t, INT2FIX(DAY_IN_SECONDS)); df = FIX2INT(f_idiv(t, INT2FIX(1))); t = f_mod(t, INT2FIX(1)); sf = f_mul(t, INT2FIX(SECOND_IN_NANOSECONDS)); if (s < 0) { nth = f_negate(nth); jd = -jd; df = -df; sf = f_negate(sf); } if (f_zero_p(sf)) sf = m_sf(dat); else { sf = f_add(m_sf(dat), sf); if (f_lt_p(sf, INT2FIX(0))) { df -= 1; sf = f_add(sf, INT2FIX(SECOND_IN_NANOSECONDS)); } else if (f_ge_p(sf, INT2FIX(SECOND_IN_NANOSECONDS))) { df += 1; sf = f_sub(sf, INT2FIX(SECOND_IN_NANOSECONDS)); } } if (!df) df = m_df(dat); else { df = m_df(dat) + df; if (df < 0) { jd -= 1; df += DAY_IN_SECONDS; } else if (df >= DAY_IN_SECONDS) { jd += 1; df -= DAY_IN_SECONDS; } } if (!jd) jd = m_jd(dat); else { jd = m_jd(dat) + jd; if (jd < 0) { nth = f_sub(nth, INT2FIX(1)); jd += CM_PERIOD; } else if (jd >= CM_PERIOD) { nth = f_add(nth, INT2FIX(1)); jd -= CM_PERIOD; } } if (f_zero_p(nth)) nth = m_nth(dat); else nth = f_add(m_nth(dat), nth); if (!df && f_zero_p(sf) && !m_of(dat)) return d_simple_new_internal(rb_obj_class(self), nth, jd, m_sg(dat), 0, 0, 0, (dat->s.flags | HAVE_JD) & ~(HAVE_CIVIL | HAVE_TIME | COMPLEX_DAT)); else return d_complex_new_internal(rb_obj_class(self), nth, jd, df, sf, m_of(dat), m_sg(dat), 0, 0, 0, 0, 0, 0, (dat->c.flags | HAVE_JD | HAVE_DF) & ~(HAVE_CIVIL | HAVE_TIME)); } break; } }