Class: Date

Inherits:
Object
  • Object
show all
Defined in:
lib/dates_toolbox.rb

Overview

Docs to follow

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#formatObject

rubocop:disable Lint/DuplicateMethods



13
14
15
# File 'lib/dates_toolbox.rb', line 13

def format
  @format
end

Instance Method Details

#day_of_the_week(date1, format_string = format) ⇒ Object



47
48
49
# File 'lib/dates_toolbox.rb', line 47

def day_of_the_week(date1, format_string = format)
    parse_date(date1, format_string).wday
end

#day_of_the_week_name(date1, format_string = format) ⇒ Object



55
56
57
# File 'lib/dates_toolbox.rb', line 55

def day_of_the_week_name(date1, format_string = format)
    Date::DAYNAMES[day_of_the_week(date1, format_string)]
end

#day_of_the_year(date1, format_string = format) ⇒ Object



63
64
65
# File 'lib/dates_toolbox.rb', line 63

def day_of_the_year(date1, format_string = format)
    parse_date(date1, format_string).yday
end

#days_between(date1, date2, format_string = format) ⇒ Object



67
68
69
70
71
72
# File 'lib/dates_toolbox.rb', line 67

def days_between(date1, date2, format_string = format)
    d1 = parse_date(date1, format_string)
    d2 = parse_date(date2, format_string)

    d2.mjd - d1.mjd
end

#dotw(date1, format_string = format) ⇒ Object



43
44
45
# File 'lib/dates_toolbox.rb', line 43

def dotw(date1, format_string = format)
    day_of_the_week(date1, format_string)
end

#dotwn(date1, format_string = format) ⇒ Object



51
52
53
# File 'lib/dates_toolbox.rb', line 51

def dotwn(date1, format_string = format)
    day_of_the_week_name(date1, format_string)
end

#doty(date1, format_string = format) ⇒ Object



59
60
61
# File 'lib/dates_toolbox.rb', line 59

def doty(date1, format_string = format)
    day_of_the_year(date1, format_string)
end

#parse_date(date1, format_string) ⇒ Object



22
23
24
25
26
27
28
29
# File 'lib/dates_toolbox.rb', line 22

def parse_date(date1, format_string)
    begin
        return Date.strptime(date1, format_string)
    rescue ArgumentError => e
        puts "Invalid date #{date1} with format #{format}"
        throw e
    end
end

#test_formatObject

rubocop:enable Lint/DuplicateMethods



18
19
20
# File 'lib/dates_toolbox.rb', line 18

def test_format
    (parse_date('1/1/1970', format).wday == 6)
end

#the_day(date1, format_string = format) ⇒ Object



31
32
33
# File 'lib/dates_toolbox.rb', line 31

def the_day(date1, format_string = format)
    parse_date(date1, format_string).day
end

#the_month(date1, format_string = format) ⇒ Object



35
36
37
# File 'lib/dates_toolbox.rb', line 35

def the_month(date1, format_string = format)
    parse_date(date1, format_string).month
end

#the_year(date1, format_string = format) ⇒ Object



39
40
41
# File 'lib/dates_toolbox.rb', line 39

def the_year(date1, format_string = format)
    parse_date(date1, format_string).year
end

#weekdays(date1, date2, format_string = format) ⇒ Object



88
89
90
91
92
93
94
95
# File 'lib/dates_toolbox.rb', line 88

def weekdays(date1, date2, format_string = format)
    start_date = parse_date(date1, format_string)
    end_date = parse_date(date2, format_string)

    # day of the week in 0-6. Sunday is day-of-week 0; Saturday is day-of-week 6.
    my_days = (1..5).to_a
    (start_date..end_date).to_a.select { |k| my_days.include?(k.wday) }
end

#weekdays_string(date1, date2, format_string = format) ⇒ Object



97
98
99
# File 'lib/dates_toolbox.rb', line 97

def weekdays_string(date1, date2, format_string = format)
    weekdays(date1, date2, format_string).map { |n| n.strftime(format) }
end

#weekends(date1, date2, format_string = format) ⇒ Object



74
75
76
77
78
79
80
81
82
# File 'lib/dates_toolbox.rb', line 74

def weekends(date1, date2, format_string = format)
    start_date = parse_date(date1, format_string)
    end_date = parse_date(date2, format_string)

    # day of the week in 0-6. Sunday is day-of-week 0; Saturday is day-of-week 6.
    my_days = [0, 6]

    (start_date..end_date).to_a.select { |k| my_days.include?(k.wday) }
end

#weekends_string(date1, date2, format_string = format) ⇒ Object



84
85
86
# File 'lib/dates_toolbox.rb', line 84

def weekends_string(date1, date2, format_string = format)
    weekends(date1, date2, format_string).map { |n| n.strftime(format) }
end