----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 <(other) if other.kind_of? Numeric then return @jd <other elsif other.kind_of? Date then return @jd <other.jd end raise TypeError, 'expected numeric or date' end def eql? (other) self other end def hash @jd end def to_s format('%04d-%02d-%02d', *Date.jd_to_civil(@jd, @gs)) end end ----Next_Part(Mon_Mar__2_19:17:19_1998_513)----