Proposal: Yet another Date method

  • Thread starter Bertram Scharpf
  • Start date
B

Bertram Scharpf

Hi,

I would like the Date class to be extended by this:

require "date"

class Date
class <<self
def easter_western year
# This is after Donald E. Knuth and it works for both
# Julian (before 1583) and Gregorian (after 1582) calendars.
g = year%19 + 1 # golden number
c = year/100 + 1 # century
x = (3*c/4) - 12 # corrections
z = (8*c+5)/25 - 5
d = 5*year/4 - x - 10 # March((-d)%7)th is Sunday
e = (11*g + 20 + z - x) % 30 # moon phase
e += 1 if e == 25 and g > 11 or e == 24
n = 44 - e # full moon
n += 30 if n < 21
month = 3
day = n+7 - (d+n)%7
if day > 31 then
month += 1
day -= 31
end
civil year, month, day
end
alias easter easter_western
end
end

I tested it with all easter date tables I found on the web
in German, English and French.

Happy Easter!

Bertram
 
J

Jeremy McAnally

I wrote something that tests for Easter, Christmas, 4th of July, and
so on wrapped into a method called "is_national_holiday?" that I
planned on releasing as a gem, but I never did...I still have it if
you actually need something that doees this.

--Jeremy

Hi,

I would like the Date class to be extended by this:

require "date"

class Date
class <<self
def easter_western year
# This is after Donald E. Knuth and it works for both
# Julian (before 1583) and Gregorian (after 1582) calendars.
g = year%19 + 1 # golden number
c = year/100 + 1 # century
x = (3*c/4) - 12 # corrections
z = (8*c+5)/25 - 5
d = 5*year/4 - x - 10 # March((-d)%7)th is Sunday
e = (11*g + 20 + z - x) % 30 # moon phase
e += 1 if e == 25 and g > 11 or e == 24
n = 44 - e # full moon
n += 30 if n < 21
month = 3
day = n+7 - (d+n)%7
if day > 31 then
month += 1
day -= 31
end
civil year, month, day
end
alias easter easter_western
end
end

I tested it with all easter date tables I found on the web
in German, English and French.

Happy Easter!

Bertram


--
http://www.jeremymcanally.com/

My free Ruby e-book:
http://www.humblelittlerubybook.com/book/

My blogs:
http://www.mrneighborly.com/
http://www.rubyinpractice.com/
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,770
Messages
2,569,584
Members
45,075
Latest member
MakersCBDBloodSupport

Latest Threads

Top