----Next_Part(Mon_Mar__2_19:17:19_1998_513)--
Content-Type: Text/Plain; charset=iso-2022-jp
Content-Transfer-Encoding: 7bit
¤Õ¤Ê¤Ð¤Ç¤¹¡£
¤â¤¦¤Ò¤È¤Ä¤Î¥Ç¥¤¥È¥¯¥é¥¹¤«¤â¤·¤ì¤Ê¤¤¡¢¥À¥Æ¥¯¥é¥¹¤ò¾Ò²ð¤·¤Þ¤¹¡£
´ðËÜŪ¤ÊÀß·×¤Ï lib/date.rb ¤òƧ·¤Æ¤¤¤Þ¤¹¡£Îñ·×»»Ë¡¤¨Â Íååõ¤Î¼°¤òºÎÍÑ
¤·¤Þ¤·¤¿¡£Meeus ¤ÎÃø ò¤ß¤¿¤¤¤È»×¤¤¤Þ¤·¤¿¤¬¡¢¤³¤Î¤¿¤á¤Ë¤ï¤¶¤ï¤¶¼è¤ê´ó¤¨Â
¤ë¤Î¤â¤Ê¤ó¤Ê¤Î¤Ç¡¢¤Þ¤À¤ß¤Æ¤Þ¤»¤ó¡£¤Õ¤¿¤Ä¤ÎÎñ¤Îº®ºß¤Î¤µ¤»¤«¤¿¤Ï Oberon ¤Î
¤¿¤á¤Î¥é¥¤¥Ö¥é¥ê¡¢Michael Griebling ¤µ¤ó¤Î JulianDay.Mod ¤¬»²¹Í¤Ë¤Ê¤ê¤Þ¤·
¤¿¡£¤³¤Î JulianDay.Mod ¤¬ Meeus ¤Î¼°¤ò¤Ä¤«¤Ã¤Æ¤¤¤Æ¡¢¤³¤ì¤òËÝÌõ¤·¤Æ¤ß¤è¤¦
¤«¤È¤â¹Í¤¨¤Þ¤·¤¿¤¬¡¢À߷פ¬µ¤¤Ë¤¤¤é¤Ê¤¤¤Î¤Ç¤ä¤á¤Þ¤·¤¿¡£
¥À¥Æ¥¯¥é¥¹¤ÎÆÃħ
lib/date.rb ¤Ç¤Ï²þÎñÆü¤¬¸ÇÄê¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤·¤¿¤¬ (±Ñ¹ñ¤Ë¤ª¤±¤ë)¡¢¥À¥Æ¥¯
¥é¥¹¤Ï¼«Í³¤ËÀßÄꤹ¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¥°¥ì¥´¥ê¥ªÎñ¤òÀ¤³¦¤ÇºÇ
ËÆ³Æþ¤·¤¿Æ¨Â ¨±µ¸¤Âǯ10·î15Æü) ¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£
¤µ¤Û¤ÉÍøÍѲÁÃͤϤʤ¤¤«¤â¤·¤ì¤Þ¤»¤ó¤¬¡¢¥À¥Æ¥¯¥é¥¹¤Ç¤Ïµª¸µÁ°¤ÎÆüÉդ⤢¤Ä¤«
¤¨¤Þ¤¹¡£
lib/date.rb ¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤Ïǯ·îÆü¤ò¤â¤Ä¤è¤¦¤Ë¤·¤Æ¤¤¤Þ¤¹¤¬¡¢¥À¥Æ¥¯¥é¥¹¤Ç
¤Ï¥æ¥ê¥¦¥¹Æü¤ò¤â¤Ä¤è¤¦¤Ë¤·¤Æ¤¤¤Þ¤¹¡£¥¯¥é¥¹¤Î¤Ä¤«¤ï¤ì¤«¤¿¤«¤é¤·¤Æ¡¢¤³¤Î¤Û
¤¦¤¬ÅԹ礬¤è¤¤¤è¤¦¤Ë»×¤ï¤ì¤ë¤«¤é¤Ç¤¹¡£¥À¥Æ#new ¤Ï¥æ¥ê¥¦¥¹Æü¤ò¤È¤ë¤è¤¦¤Ë¤·
¤Æ¡¢¥À¥Æ#new3 (¤¤¤¤Ì¾Á°¤¬»×¤¤¤Ä¤«¤Ê¤¤) ¤Ïǯ·îÆü¤ò¤È¤ë¤è¤¦¤Ë¤·¤Þ¤·¤¿¡£
¤³¤Î¥æ¥ê¥¦¥¹Æü¤È¤¤¤¦¤Î¤Ï¡¢¥æ¥ê¥¦¥¹ÄÌÆü¤È¤â¤¤¤Ã¤Æ (Julian period¡¢Julian
day number)¡¢µª¸µÁ°4713ǯ1·î1Æü (¥æ¥ê¥¦¥¹Îñ) Àµ¸á (¥°¥ê¥Ë¥Ã¥¸Ê¿¶Ñ»þ) ¤òÎñ
¸µ (0.0) ¤È¤·¤¿ÄÌÆü¤Î¤³¤È¤Ç¤¹¡£¤Ê¤ª¡¢¥À¥Æ¥¯¥é¥¹¤Ç¤Ïµª¸µÁ°4713ǯ1·î1Æü¤ò
-4712ǯ1·î1Æü¤È¤¢¤é¤ï¤·¤Þ¤¹¡£Ç¯¤Ë¤ª¤±¤ëÄÌÆü¤Î¤³¤È¤ò Julian day number ¤È
¾Î¤¹¤ë¿Í¡¹ (µ» Ô¤À¤±¤¨Â¿© ¤¬¤¤¤Þ¤¹¤¬¡¢¤È¤Ï´Ø·¸¤¬¤¢¤ê¤Þ¤»¤ó¡£¤Þ¤¿¡¢¥æ
¥ê¥¦¥¹Îñ (Julian calendar) ¤È¤â´Ø·¸¤¬¤¢¤ê¤Þ¤»¤ó¡£¤Á¤Ê¤ß¤Ë¡¢¥æ¥ê¥¦¥¹Æü¤Ï¹Í
°Æ¼Ô¤ÎÉã¿Æ¤Î̾Á°¤Ë¡¢¥æ¥ê¥¦¥¹Îñ¤Ï¥«¥¨¥µ¥ë¤Î̾Á°¤ËͳÍ褷¤Þ¤¹¡£
¥æ¥ê¥¦¥¹Æü¤ÏÀµ¸á¤è¤ê´ªÄꤷ¤Æ¤¤¤Æ¤Þ¤¹¤¬¡¢¥À¥Æ¥¯¥é¥¹¤Ë¤ª¤¤¤Æ¤Ï»þ¹ï¤ÏÉÔÍפÊ
¤Î¤Ç¡¢ÁÇľ¤ËÀµ¸á¤Î´ªÄê¤ò¤â¤Ã¤ÆÆü¤Î¥æ¥ê¥¦¥¹Æü¤È¤¹¤ì¤Ð¤è¤¤¤ï¤±¤Ç¤¹¡£¤·
¤«¤·¤Ê¤¬¤é¡¢Meeus ¤Î¼°¤Ç¤Ï¸áÁ°Îí»þ¤ò¤â¤Ã¤ÆÆü¤Î¥æ¥ê¥¦¥¹Æü¤È´ªÄꤷ¤Æ¤ª
¤ê¡¢¤³¤ì¤Ïü¿ô¤¬¤Ä¤¤¤Æ±µÆ«¤·¤¤¤À¤±¤Ê¤Î¤Ç¡¢¥À¥Æ¥¯¥é¥¹¤Ç¤ÏÀµ¸á¤Î´ªÄê¤ò¤â¤Ã
¤ÆÆü¤Î¥æ¥ê¥¦¥¹Æü¤È¤Ê¤ë¤è¤¦ µ¤·¤Æ¤¤¤Þ¤¹¡¨Â
²áµî¤ËÃÖ±¼Ë¡¤¬¸í¤Ã¤Æ±¿ÍѤ¬¤µ¤ì¤¿¤³¤È¤¬¤¢¤ê¤Þ¤¹¤¬¡¢¥À¥Æ¥¯¥é¥¹¤Ç¤Ï¤¤¤Ã
¤¿¤³¤È¤Ï¹Íθ¤·¤Þ¤»¤ó¡£¤Þ¤¿¡¢Ç¯»Ï¤Ï¤¤¤Ä¤â1·î1Æü¤Ç¤¹¡£
to_s ¤Î °¤¬°ã¤Ã¤Æ¤¤¤Þ¤¹¡£¥á¥
¥É̾¤¬¤Á¤ç¤Ã¤È°ã¤¤¤Þ¤¹¡£¤¢¤Þ¤ê¤Ç
¤Ê¤¤¥á¥É¤¬¤¢¤Ã¤¿¤ê¡¢¤Ê¤«¤Ã¤¿¤ê¤·¤Þ¤¹¡£
µ¤¤Ë¤Ê¤ë¤Î¤Ï¥À¥Æ¥¯¥é¥¹¤Î¿®ÍêÀ¤Ç¤¹¤¬¡¢Àۺ¥ì¥ó¥À¡¼¥â¥¸¥å¡¼¥ë¤È800Ç¯ÄøÆÍ
¤¹ç¤»¤Æ¸¡¾Ú¤·¤Æ¤ß¤¿¤È¤³¤í¡¢Áê°ã¤Ï¤¢¤ê¤Þ¤»¤ó¤Ç¤·¤¿¡£¤Á¤Ê¤ß¤Ë¡¢¥À¥Æ¥¯¥é¥¹
¤È¥«¥ì¥ó¥À¡¼¥â¥¸¥å¡¼¥ë¤Î¥¢¥ë¥´¥ê¥º¥à¤Ï¤Þ¤Ã¤¿¤¯°Û¤Ê¤ë¤â¤Î¤Ç¤¹¡£¥«¥ì¥ó¥À¡¼
¥â¥¸¥å¡¼¥ë¤Ç¤ÏÍÍ¡¹¤Ê¥«¥ì¥ó¥À¡¼¤ò¤Ç¤¤ë¤À¤±Åý°ìŪ¤Ë¤¢¤Ä¤«¤¦¤è¤¦¤Ë¹Í¤¨¤é¤ì
¤Æ¤¤¤Þ¤¹¡£ÍÍ¡¹¤Ê¥«¥ì¥ó¥À¡¼¤ò¤Ä¤«¤Ã¤Æ¤ß¤¿¤¤¤«¤¿¤Ï¤³¤Á¤é¤ò¤ª»î¤·¤¯¤À¤µ¤¤¡£
¥À¥Æ¥¯¥é¥¹¤Ë¤Ä¤¤¤Æ¤ÎÄ󰯤äźºï¤Ï¤¤¤Ä¤Ç¤â´¿·Þ¤·¤Þ¤¹¡£
--Tadayoshi Funaba
----Next_Part(Mon_Mar__2_19:17:19_1998_513)--
Content-Type: Text/Plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
# date.rb: Written by Tadayoshi Funaba 1998
# $Id: date.rb,v 1.2 1998/03/02 10:02:39 tadf Exp $
class Date
include Comparable
MONTHNAMES '', 'January', 'February', 'March', 'April', 'May', 'June',
'July', 'August', 'September', 'October', 'November', 'December' ]
DAYNAMES 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday',
'Friday', 'Saturday' ]
GREGORY 299161 # Oct 14, 1582
ENGLAND 361222 # Sept 14, 1752
def Date.civil_to_jd(y, m, d, gs rue)
if m < then
y -
m + 2
end
a y / 100).to_i
b a / 4).to_i
c - a + b
e 365.25 * (y + 4716)).to_i
f 30.6001 * (m + 1)).to_i
jd + d + e + f - 1524
unless (if gs.kind_of? Numeric then jd > s
else gs end) then
jd -
end
return jd
end
def Date.jd_to_civil(jd, gs rue)
unless (if gs.kind_of? Numeric then jd > s
else gs end) then
a d
else
w (jd - 1867216.25) / 36524.25).to_i
x w / 4).to_i
a d + 1 + w - x
end
b + 1524
c (b - 122.1) / 365.25).to_i
d 365.25 * c).to_i
e (b - d) / 30.6001).to_i
f 30.6001 * e).to_i
day - d - f
if e < 3 then
m - 1
else
m - 13
end
if m < then
y - 4715
else
y - 4716
end
return y, m, day
end
def initialize(jd , gs REGORY)
@jd d
@gs s
end
def Date.new3(y 4712, m , d , gs REGORY)
Date.new(Date.civil_to_jd(y, m, d, gs), gs)
end
def Date.today
Date.new3(*Time.now.to_a[3..5].reverse)
end
def Date.mjd_to_jd(mjd)
mjd + 2400000.5
end
def Date.jd_to_mjd(jd)
jd - 2400000.5
end
def Date.tjd_to_jd(tjd)
tjd + 2440000.5
end
def Date.jd_to_tjd(jd)
jd - 2440000.5
end
def jd
@jd
end
def mjd
Date.jd_to_mjd(@jd)
end
def tjd
Date.jd_to_tjd(@jd)
end
def year
Date.jd_to_civil(@jd, @gs)[0]
end
def yday
@jd - Date.civil_to_jd(year - 1, 12, 31, @gs)
end
def mon
Date.jd_to_civil(@jd, @gs)[1]
end
def mday
Date.jd_to_civil(@jd, @gs)[2]
end
def wday
k @jd + 1) % 7
k + if k < 0
k
end
def leap?
Date.jd_to_civil(Date.civil_to_jd(year, 2, 28, @gs) + 1, @gs)[1] 2
end
def + (other)
if other.kind_of? Numeric then
return Date.new(@jd + other, @gs)
end
raise TypeError, 'expected numeric'
end
def - (other)
if other.kind_of? Numeric then
return Date.new(@jd - other, @gs)
elsif other.kind_of? Date then
return @jd - other.jd
end
raise TypeError, 'expected numeric or date'
end
def <