diff --git a/lib/modules/Calendar.pmod/Julian.pmod b/lib/modules/Calendar.pmod/Julian.pmod new file mode 100644 index 0000000000000000000000000000000000000000..7c03a20b858cc0e31f5795e7de6f5f34fd9b1a64 --- /dev/null +++ b/lib/modules/Calendar.pmod/Julian.pmod @@ -0,0 +1,35 @@ +inherit Calendar.Gregorian; + +class Year +{ + inherit Calendar.Gregorian.Year; + + int julian_day(int d) // jd%7 gives weekday, mon=0, sun=6 + { + return 1721424 + d + (36525*(y-1))/100; + } + + int leap() + { + return !(y%4); + } + +} + +class Day +{ + inherit Calendar.Gregorian.Day; + + void create(int ... arg) + { + if (!sizeof(arg)) + { + int jd = Calendar.Gregorian.Day()->julian_day()-1721424; + y = jd*100/36525+1; + d = jd-(y-1)*36525/100; + } + else + ::create(@arg); + } + +}