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



15
16
17
# File 'lib/dates_toolbox.rb', line 15

def format
  @format
end

Instance Method Details

#day_of_the_week(date1, format_string = format) ⇒ Object



49
50
51
# File 'lib/dates_toolbox.rb', line 49

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



57
58
59
# File 'lib/dates_toolbox.rb', line 57

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



65
66
67
# File 'lib/dates_toolbox.rb', line 65

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

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



69
70
71
72
73
74
# File 'lib/dates_toolbox.rb', line 69

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



45
46
47
# File 'lib/dates_toolbox.rb', line 45

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

#dotwn(date1, format_string = format) ⇒ Object



53
54
55
# File 'lib/dates_toolbox.rb', line 53

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

#doty(date1, format_string = format) ⇒ Object



61
62
63
# File 'lib/dates_toolbox.rb', line 61

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

#parse_date(date1, format_string) ⇒ Object



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

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



20
21
22
# File 'lib/dates_toolbox.rb', line 20

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

#the_day(date1, format_string = format) ⇒ Object



33
34
35
# File 'lib/dates_toolbox.rb', line 33

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

#the_month(date1, format_string = format) ⇒ Object



37
38
39
# File 'lib/dates_toolbox.rb', line 37

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

#the_year(date1, format_string = format) ⇒ Object



41
42
43
# File 'lib/dates_toolbox.rb', line 41

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

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



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

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



99
100
101
# File 'lib/dates_toolbox.rb', line 99

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



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

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



86
87
88
# File 'lib/dates_toolbox.rb', line 86

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