יום יוליאני

מתוך ויקיפדיה, האנציקלופדיה החופשית

יום יוליאני הוא ספירת ימים רציפה המשמשת באסטרונומיה ובתוכנות לחישוב קל של ימים שחלפו בין שני אירועים (למשל תאריך ייצור ותאריך אחרון לשיווק).

היום היוליאני נכתב כשבר עשרוני של מספר הימים שחלפו מיום שני, 1 בינואר 4713 לפני הספירה, בשעה 12 בצהריים בגריניץ'. במקרים מסוימים הפחיתו מהמספר 2,400,000 או 2,440,000 כדי לחסוך זיכרון מחשב.
עכשיו 2,460,422.0488426 ריענון

היסטוריה[עריכת קוד מקור | עריכה]

היום היוליאני הומצא על ידי יוזף סקליגר בשנת 1583 בעקבות המעבר ללוח הגרגוריאני שיצר קושי בחישוב תאריכים לטווח ארוך והפרש הימים המדויק ביניהם. סקליגר קבע את נקודת ההתחלה בשנה שבה התלכדו מחזור השמש, המחזור המטוני ומחזור המס הביזנטי (אנ'). מחזור השמש (הנוצרי)[1] מתחיל בשנה מעוברת שמתחילה ביום שני (בלוח היוליאני), המחזור המטוני מתחיל בשנת 17 במחזור העיבור היהודי. ביחד הם יוצרים תקופה של 7980 שנה שתסתיים בשנת 3268. השם 'יום יוליאני' אינו על שם אביו של סקליגר אלא בגלל ההתאמה ללוח היוליאני.

בהתחלה תחילת היום חושבה לפי קו האורך של אלכסנדריה = קו אורך 30 מזרח, שהיה מקובל על האסטרונומים לציון זמנים. כשהתקבל שעון גריניץ' כשעון האוניברסלי עברו לחשב לפי קו האורך של גריניץ' = קו אורך 0.

האסטרונום ג'ון הרשל הנהיג את השימוש בשיטה באסטרונומיה.

חישוב[עריכת קוד מקור | עריכה]

המרת תאריך לועזי ליום יוליאני[עריכת קוד מקור | עריכה]

אלגוריתם בשפת JavaScript.

var Y = year, M = month, D = day, leap = 0
if (Y < 0) {Y ++} if (M < 3) {M += 12, Y --}
if (Y > 1582 || Y == 1582 && (M > 10 || (M == 10 && D > 14))) {leap = Math.floor(Y / 100) - Math.floor(Y / 400) - 2}
JulianDay = Math.floor((Y + 4716) * 365.25) + Math.floor((M + 1) * 30.6) + D - leap - 1524.5 + (hours/24)+(minutes/1440)+(seconds/86400)

המרת יום יוליאני לתאריך לועזי[עריכת קוד מקור | עריכה]

אלגוריתם בשפת JavaScript.

var D = Math.floor(JulianDay - 1720995.5); if (D > 578165) {D += Math.ceil(Math.floor((D-146221.25)/36524.25)*3/4)+1}
var Y = Math.floor((D-122.1)/365.25), YD = Math.floor(Y*365.25), M = Math.floor((D-YD)/30.61), D = D-YD-Math.floor(M*30.61)
if (M > 13) {M -= 12} if (M > 3) {Y --} if (Y >= 0) {Y ++} M --
year = Y, month = M, day = D

המרת תאריך עברי ליום יוליאני[עריכת קוד מקור | עריכה]

קוד מקור בשפת JavaScript (מותאם ל-6:00 בבוקר UTC).

function ibur(x){return (x * 12 - 4) % 19}
LengthOfMonth = 765433 / 25920
function roshana(x)
{
var TimeSinceEpoch = Math.floor((x * 235 + 3) / 19) * LengthOfMonth + 1.5
var Parts = TimeSinceEpoch % 1
var ROSHANA = Math.floor(TimeSinceEpoch)
var Day = ROSHANA % 7
if (Parts >= 0.75) ROSHANA ++;
else
{
if (Day == 3 && Parts > 0.38285 && ibur(x) > 6) ROSHANA ++
if (Day == 2 && Parts > 0.6477 && ibur(x) > 11) ROSHANA ++
}
if ([1,4,6].includes(ROSHANA % 7)) ROSHANA ++
return ROSHANA
}
function year_data(x)
{
lastROSH = roshana(x)
nextROSH = roshana(x + 1)
LengthOfYear = nextROSH - lastROSH
DaysOfMonth = [30,29,30,29,30,0,29,30,29,30,29,30,29]
if (ibur(x) < 7) DaysOfMonth[5] = 30
if (LengthOfYear % 10 == 5) DaysOfMonth[1] = 30
if (LengthOfYear % 10 == 3) DaysOfMonth[2] = 29
}
function calculation(days, month, year)
{
Y = year - 1923
NameOfMonth = ["תשרי","מרחשון","כסלו","טבת","שבט","אדר א'","אדר ב'","ניסן","אייר","סיון","תמוז","אב","אלול"]
if (ibur(Y) > 6) NameOfMonth[6] = "אדר"
M = NameOfMonth.indexOf(month)
if (M < 0) return "חודש לא קיים"
year_data(Y)
while (M > 0) days += DaysOfMonth[-- M]
JulianDay = lastROSH + days + 1049996.75
return JulianDay
}

המרת יום יוליאני לתאריך עברי[עריכת קוד מקור | עריכה]

קוד מקור בשפת JavaScript (לפי השקיעה הממוצעת בירושלים - 17:39:03.1).

function HebrewDate(JulianDay)
{
DaysSinceEpoch = Math.floor(JulianDay - 1049998.152119) + 1
LengthOfMonth = 765433 / 25920
function ibur(x){return (x * 12 - 4) % 19}
function roshana(x)
{
var TimeSinceEpoch = Math.floor((x * 235 + 3) / 19) * LengthOfMonth + 1.5
var Parts = TimeSinceEpoch % 1
var ROSHANA = Math.floor(TimeSinceEpoch)
var Day = ROSHANA % 7
if (Parts >= 0.75) ROSHANA ++;
else
{
if (Day == 3 && Parts > 0.38285 && ibur(x) > 6) ROSHANA ++
if (Day == 2 && Parts > 0.6477 && ibur(x) > 11) ROSHANA ++
}
if ([1,4,6].includes(ROSHANA % 7)) ROSHANA ++
return ROSHANA
}
function year_data(x)
{
lastROSH = roshana(x)
nextROSH = roshana(x + 1)
LengthOfYear = nextROSH - lastROSH
DaysOfMonth = [30,29,30,29,30,0,29,30,29,30,29,30,29]
if (ibur(x) < 7) DaysOfMonth[5] = 30
if (LengthOfYear % 10 == 5) DaysOfMonth[1] = 30
if (LengthOfYear % 10 == 3) DaysOfMonth[2] = 29
}
year = Math.floor((Math.floor((DaysSinceEpoch + 5.5) / LengthOfMonth) + 75) * 19 / 235) - 6
year_data(year); if(lastROSH > DaysSinceEpoch) year_data(-- year)
days = DaysSinceEpoch -= lastROSH
month = 0
while (days >= 0) days -= DaysOfMonth[month], month ++
days += DaysOfMonth[-- month] + 1
year += 1923
NameOfMonth = ["תשרי","מרחשון","כסלו","טבת","שבט","אדר א'","אדר ב'","ניסן","אייר","סיון","תמוז","אב","אלול"]
if (ibur(year) > 6) NameOfMonth[6] = "אדר"
document.write("\u200F",days," ",NameOfMonth[month]," ",year)
}

ראו גם[עריכת קוד מקור | עריכה]

קישורים חיצוניים[עריכת קוד מקור | עריכה]

הערות שוליים[עריכת קוד מקור | עריכה]

  1. ^ היהודי מתחיל שנה ורבע אחר כך, ראה ברכת החמה.