@@ -232,8 +232,10 @@ def self.month_name(number)
232
232
# Date Instances
233
233
#
234
234
235
+ # day count since epoch
235
236
attr_reader :ordinal_day
236
237
238
+ # ordinal_day will be calculated if not passed in
237
239
def initialize ( year :, month :, day :, ordinal_day : nil )
238
240
# validate year
239
241
raise ( InvalidYear , year ) unless ( MIN_Y ..MAX_Y ) . cover? ( year )
@@ -259,20 +261,19 @@ def initialize(year:, month:, day:, ordinal_day: nil)
259
261
super ( year :, month :, day :)
260
262
end
261
263
262
- def leap_year?
263
- Date . leap_year? ( year )
264
- end
265
-
266
- def <=>( other )
267
- @ordinal_day <=> other . ordinal_day
268
- end
269
-
264
+ # YYYY-MM-DD, per ISO 8601
270
265
def to_s
271
266
format ( '%04d-%02d-%02d' , year , month , day )
272
267
end
273
268
274
- def name
275
- format ( "%s %d, %d" , Date . month_name ( month ) , day , year )
269
+ # given a Date, return a count of days, possibly negative
270
+ def diff ( other )
271
+ @ordinal_day - other . ordinal_day
272
+ end
273
+
274
+ # per Comparable, return (-1, 0, +1) (less than, equals, greater than)
275
+ def <=>( other )
276
+ @ordinal_day <=> other . ordinal_day
276
277
end
277
278
278
279
# given a count of days, return a new Date
@@ -281,13 +282,19 @@ def +(days)
281
282
Date . from_ordinal ( @ordinal_day + days )
282
283
end
283
284
285
+ # "February 29, 2004"
286
+ def name
287
+ format ( "%s %d, %d" , Date . month_name ( month ) , day , year )
288
+ end
289
+
290
+ # convenience
284
291
def -( days )
285
292
self . +( -1 * days )
286
293
end
287
294
288
- # given a Date, return a count of days, possibly negative
289
- def diff ( other )
290
- @ordinal_day - other . ordinal_day
295
+ # convenience
296
+ def leap_year?
297
+ Date . leap_year? ( year )
291
298
end
292
299
end
293
300
end
0 commit comments