Skip to content

Instantly share code, notes, and snippets.

@tekin
Forked from alterisian/weekends.rb
Created June 6, 2011 08:30
Show Gist options
  • Save tekin/1009935 to your computer and use it in GitHub Desktop.
Save tekin/1009935 to your computer and use it in GitHub Desktop.

Revisions

  1. tekin revised this gist Jun 6, 2011. 1 changed file with 21 additions and 31 deletions.
    52 changes: 21 additions & 31 deletions weekends.rb
    Original file line number Diff line number Diff line change
    @@ -1,34 +1,24 @@
    #Author: Ian Moss aka oceanician : http://twitter.com/oceanician
    #First Published: https://gist.github.com/1009253
    # Author: Ian Moss aka oceanician : http://twitter.com/oceanician
    # First Published: https://gist.github.com/1009253

    def next_friday(d)
    while d.cwday!=5
    d = d+1.day
    end
    d
    end
    # modulus is your friend! this works because of the way ruby
    # modulus behaves when the dvidend is negative.
    def friday_after(date)
    date +(5 -date.cwday) % 7
    end

    def weekends_til( end_date )
    weekends = []

    friday_count = next_friday( Date.today )

    while ( friday_count <= end_date )
    weekends << friday_count
    friday_count = friday_count + 7.days
    end

    weekends
    end
    # Returns all the Fridays between today and the date specified.
    def fridays_until(date)
    friday = friday_after(Date.today)
    fridays = []
    while friday <= date
    fridays << friday
    friday += 7.days
    end
    fridays
    end

    #calculate all the weekends from now, until the middle of September.
    #I'm running as part of a rails project with:
    # ruby script/runner lib\weekends.rb
    #future = Date.today + 5.months + 3.weeks

    future = Date.civil(y=2011, m=9, d=21)
    weekends=weekends_til(future)
    puts "Make the most of the next #{weekends.size} weekends until, "+future.to_s(:long)
    weekends.each{|w| puts "From: Fri "+w.to_s+" to Sun " +(w+3.days).to_s}


    future_date = Date.civil(y=2011, m=9, d=21)
    fridays = fridays_until(future_date)
    puts "Make the most of the next #{fridays.size} weekends until, "+future_date.to_s(:long)
    fridays.each{ |friday| puts "From: Fri #{friday.to_s} to Sun #{(friday.end_of_week).to_s}" }
  2. Ian M revised this gist Jun 5, 2011. 1 changed file with 5 additions and 7 deletions.
    12 changes: 5 additions & 7 deletions weekends.rb
    Original file line number Diff line number Diff line change
    @@ -8,16 +8,14 @@ def next_friday(d)
    d
    end

    def weekends_til(d)
    def weekends_til( end_date )
    weekends = []

    next_friday = next_friday( Date.today )
    friday_count = next_friday( Date.today )

    n = next_friday

    while ( n <= d )
    weekends << n
    n=n+7.days
    while ( friday_count <= end_date )
    weekends << friday_count
    friday_count = friday_count + 7.days
    end

    weekends
  3. Ian M revised this gist Jun 5, 2011. 1 changed file with 2 additions and 0 deletions.
    2 changes: 2 additions & 0 deletions weekends.rb
    Original file line number Diff line number Diff line change
    @@ -1,3 +1,5 @@
    #Author: Ian Moss aka oceanician : http://twitter.com/oceanician
    #First Published: https://gist.github.com/1009253

    def next_friday(d)
    while d.cwday!=5
  4. Ian M created this gist Jun 5, 2011.
    34 changes: 34 additions & 0 deletions weekends.rb
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,34 @@

    def next_friday(d)
    while d.cwday!=5
    d = d+1.day
    end
    d
    end

    def weekends_til(d)
    weekends = []

    next_friday = next_friday( Date.today )

    n = next_friday

    while ( n <= d )
    weekends << n
    n=n+7.days
    end

    weekends
    end

    #calculate all the weekends from now, until the middle of September.
    #I'm running as part of a rails project with:
    # ruby script/runner lib\weekends.rb
    #future = Date.today + 5.months + 3.weeks

    future = Date.civil(y=2011, m=9, d=21)
    weekends=weekends_til(future)
    puts "Make the most of the next #{weekends.size} weekends until, "+future.to_s(:long)
    weekends.each{|w| puts "From: Fri "+w.to_s+" to Sun " +(w+3.days).to_s}