ข้ามไปเนื้อหา

วันจูเลียส

จากวิกิพีเดีย สารานุกรมเสรี

วันจูเลียส (Julian day หรือ Julian date) บ้างเรียก จำนวนวันจูเลียส หรือ เลขวันจูเลียส (Julian day number) หมายถึง หมายเลขประจำวันซึ่งเริ่มนับเลขวัน 0 ตั้งแต่วันจันทร์ที่ 1 มกราคม ก่อนคริสต์ศักราช 4713 ปี (ค.ศ. -4712) ตามปฏิทินจูเลียส หรือวันที่ 22 พฤศจิกายน ก่อนคริสต์ศักราช 4714 ปี (ค.ศ. -4713) ตามปฏิทินก่อนเกรกอรี เวลา 12 นาฬิกาตรง จนถึงปัจจุบันหรือเวลาที่ต้องการ[1][2][3] เหตุที่กำหนดให้เริ่มวันที่ดังกล่าวนั้น เป็นเพราะต้องการให้ครอบคลุมถึงเหตุการณ์ทางประวัติศาสตร์ต่าง ๆ นอกจากการที่วันที่ดังกล่าวเป็นวันเริ่มวัฏจักรสิบห้าปี (indiction) วัฏจักรสุริยะ และวัฏจักรเมตอน ค่าวันจูเลียสหากคำนวณตามสูตรจากปฏิทินต่างระบบ หากเป็นวันที่เดียวกัน จะได้เลขเดียวกันเสมอไปไม่มีผิดเพี้ยน

ค่าวันจูเลียส ณ วันเวลาใด ๆ มีค่าเท่ากับค่าวันจูเลียส ลดลงเสีย 0.5 (เพราะนับที่เที่ยงวันเป็นหลักต้องถอยไปที่เที่ยงคืน) แล้วจึงเอาเวลาเป็นทศนิยมนับแต่เริ่มวันนั้นบวกเข้า[4] ยกตัวอย่างวันที่ 1 มกราคม พ.ศ. 2543 เวลา 0 นาฬิกา ค่าวันจูเลียสกำหนดที่ 2451544.5 และ ณ เวลา 12 นาฬิกา กำหนดที่ 2451545[5][6] อนึ่งเวลาที่ใช้นี้ ในอดีตใช้เวลามาตรฐานกรีนิชหรือเวลาปูมดาราศาสตร์ (ephemeris time) แต่ปัจจุบันแนะนำให้ใช้เวลาพื้นโลก (terrestrial time) เนื่องจากเวลามาตรฐานกรีนิชถือการหมุนรอบตัวของโลกเป็นหลักทำให้ไม่สม่ำเสมอ และบ่อยครั้งที่ต้องเติมอธิกวินาทีลงไปในเวลากรีนิชด้วย

ยุคจูเลียส เป็นช่วงเวลาทั้งสิ้น 7980 ปี นับปีแรกที่ก่อนคริสต์ศักราช 4713 ปี[7]

ในภาษาอังกฤษมีการใช้ Julian date เรียกสิ่งอื่นด้วยนอกเหนือจากค่าวันหรือลำดับวัน อาทิ ลำดับวันในหนึ่งปีนับแต่วันที่ 1 มกราคมสำหรับใช้ในการโปรแกรมคอมพิวเตอร์ การบริหารรัฐกิจ การทหาร และอุตสาหกรรมอาหาร[8] และวันที่ในปฏิทินจูเลียส

วิธีการคำนวณค่าวันจูเลียส ณ เที่ยงวัน จากวันที่

[แก้]

ขั้นตอนที่แสดงต่อไปนี้เป็นขั้นตอนสำหรับการคำนวณค่าวันจูเลียสจากวันที่ ปีที่ใช้ในการคำนวณให้ใช้คริสต์ศักราช (ไม่ใช่พุทธศักราช ซึ่งแปลงให้เป็นคริสต์ศักราชได้โดยเอา 543 ลบ) และให้นับอย่างนักดาราศาสตร์และโหราศาสตร์ ไม่ใช่อย่างนักประวัติศาสตร์ คือ ก่อนคริสต์ศักราช 100 ปี แบบนักประวัติศาสตร์ ตรงกับคริสต์ศักราช -99 แบบนักดาราศาสตร์ อีกนัยหนึ่งคือ ถ้ามีเอกสารสำคัญทางประวัติศาสตร์ระบุปีมา ให้ลดลง 1 แล้วใส่เครื่องหมายลบ ส่วนเดือนที่ใช้ในการคำนวณ นับ 1 ที่เดือนมกราคม นับ 2 ที่เดือนกุมภาพันธ์ ไปจนถึง 12 ที่เดือนธันวาคม

วันที่ในปฏิทินเกรกอรี

[แก้]

ขั้นตอนวิธีต่อไปนี้ใช้ได้กับวันที่ในปฏิทินเกรกอรีและปฏิทินก่อนเกรกอรี นับแต่วันที่ 23 พฤศจิกายน ค.ศ. -4713[9]

JDN = FLOOR(1461*(Y+4800+FLOOR((M-14)/12))/4)+FLOOR((367*(M-2-12*FLOOR((M-14)/12)  ))/12)-FLOOR(3*FLOOR((Y+4900+FLOOR((M-14)/12))/100,1)/4)+D-32077

โดยที่ FLOOR(x) คือ function ในการปัดเศษลง

Y ,M , D คือ ปี (ตามค.ศ.) เดือน และวันในเดือน ตามลำดับ

อีกวิธีหนึ่ง ให้ดำเนินการตามขั้นตอนต่อไปนี้[10]

  1. ถ้าเดือนน้อยกว่าหรือเท่ากับ 2 (คือ มกราคม และกุมภาพันธ์; M <= 2) ทำขั้นตอนต่อไปนี้
    1. ลดปีลงเสีย 1 (Y = Y - 1)
    2. บวกเดือนขึ้น 12 (M = M + 12)
  2. คำนวณเกณฑ์ต่อไปนี้: A = ปัดลง(Y/100)
  3. 2 - A + ปัดลง(A/4)
  4. JDN = ปัดลง(365.25 × (Y + 4716)) + ปัดลง(30.6001 × (M+1)) + D + B - 1525

ตัวอย่างการคำนวณ

[แก้]

วันที่ 22 เดือนมิถุนายน พ.ศ. 2568 หรือ ค.ศ. 2025 คำนวณได้ดังนี้ Y = 2025, M = 06, D = 22

วิธีที่ 1

[แก้]
  • JDN = ปัดลง((1461 × (2025 + 4800 + ปัดลง( (06 − 14) / 12 ) )) / 4) = ข้อผิดพลาดสคริปต์: ไม่มีมอดูล "ตัวอย่างวันจูเลียส"
  • + ปัดลง( (367 × (06 − 2 − 12 × ปัดลง( (06 − 14) / 12) )) / 12) = + ข้อผิดพลาดสคริปต์: ไม่มีมอดูล "ตัวอย่างวันจูเลียส"
  • − ปัดลง( 3 × (ปัดลง ( (2025 + 4900 + ปัดลง( (06 − 14) / 12 ) ) / 100 ) )/4) = − ข้อผิดพลาดสคริปต์: ไม่มีมอดูล "ตัวอย่างวันจูเลียส"
  • + 22 − 32076 = + ข้อผิดพลาดสคริปต์: ไม่มีมอดูล "ตัวอย่างวันจูเลียส"

ดังนั้น JDN = ข้อผิดพลาดสคริปต์: ไม่มีมอดูล "ตัวอย่างวันจูเลียส"

วิธีที่ 2

[แก้]
  • M มากกว่าหรือเท่ากับ 3 คง M ไว้ตามเดิม
  • M มากกว่าหรือเท่ากับ 3 คง Y ไว้ตามเดิม
  • A = ปัดลง(2025/100) = ข้อผิดพลาดสคริปต์: ไม่มีมอดูล "ตัวอย่างวันจูเลียส"
  • B = 2 − A + ปัดลง(168/4) = ข้อผิดพลาดสคริปต์: ไม่มีมอดูล "ตัวอย่างวันจูเลียส"
  • JDN = ปัดลง(365.25 × (2025 + 4716)) + ปัดลง(30.6001 × (06+1)) + 22 + (ข้อผิดพลาดสคริปต์: ไม่มีมอดูล "ตัวอย่างวันจูเลียส") - 1525 = ข้อผิดพลาดสคริปต์: ไม่มีมอดูล "ตัวอย่างวันจูเลียส"

วันที่ในปฏิทินจูเลียส

[แก้]

ขั้นตอนวิธีต่อไปนี้ใช้ได้กับวันที่ในปฏิทินจูเลียส นับแต่ ค.ศ. -4712 เป็นต้นมา[11]

JDN = 367 × Y − (7 × (Y + 5001 + (M − 9)/7))/4 + (275 × M)/9 + D + 1729776

การคำนวณค่าวันจูเลียส ณ เวลาอื่นนอกเหนือจาก 12 นาฬิกา

[แก้]

ค่าวันจูเลียสที่คิดเศษเวลา ณ เวลาอื่น ๆ นั้น คำนวณโดยใช้ใช้ความเข้าใจที่ว่า ค่าวันจูเลียสวัด ณ 12 นาฬิกา มีหน่วยเป็นวันเต็ม แต่เศษเวลาน้อยกว่า 1 วันเสมอไป ถ้าเวลาอยู่หลังเที่ยงวัน ก็ให้ทำให้เป็นเศษทศนิยมเอามาบวกกับค่าวันนั้นได้เลย แต่ถ้าเวลาอยู่ก่อนเที่ยงวัน ให้ลดค่าวันนั้นลงเสีย 0.5 แล้วเอาเศษเวลาบวก อีกวิธีหนึ่งคือใช้สูตรดังต่อไปนี้ กำหนด hour, minutes, second แทนชั่วโมง นาที วินาที ตามลำดับ จะได้

ถ้าชั่วโมงน้อยกว่า 12 สูตรจะลดค่าวันลงมา แต่ถ้าชั่วโมงมากกว่า 12 สูตรจะเพิ่มค่าวันขึ้นไป ตัวอย่างเช่น วันที่ 1 มกราคม พ.ศ. 2543 เวลา 18 นาฬิกา ตรงกับ JD = 2451545.25

ถ้าเวลานั้นอยู่เลยเที่ยงคืนไป ให้บวก JDN ขึ้น 1 คือเปลี่ยนไปใช้วันถัดไป พจน์ hour-12 จะติดลบเอง

การคำนวณวันในสัปดาห์จากค่าวันจูเลียส

[แก้]

เมื่อมีค่าวันจูเลียส ณ เวลาเที่ยงวันของวันใด จะคำนวณเป็นวันในสัปดาห์ ให้เอา 1 บวก แล้วเอา 7 หาร เศษเท่าใดพิจารณาตามตารางข้างล่าง หรือเขียนเป็นสมการคณิตศาสตร์ได้ว่า

W1 = mod(J + 1, 7)[12]

W1 (เศษการหาร) 0 1 2 3 4 5 6
วันในสัปดาห์ อาทิตย์ (อา/อ) จันทร์ (จ) อังคาร (อ/ภ) พุธ (พ/ว) พฤหัสบดี (พฤ/ช) ศุกร์ (ศ) เสาร์ (ส)

ถ้าค่าวันนั้นติดเศษทศนิยมมากกว่า 0.5 แสดงว่าเวลาเลยเที่ยงคืนขึ้นวันใหม่แล้วให้ปัดขึ้น แต่ถ้าน้อยกว่า แสดงว่าเวลาเพิ่งเลยเที่ยงมา ให้ปัดลงก่อนการคำนวณ

การคำนวณวันที่ในปฏิทินจูเลียสหรือเกรกอรีจากค่าวันจูเลียส

[แก้]

ขั้นตอนต่อไปนี้ใช้แปลงค่าวันจูเลียสเปํนวันที่ในปฏิทินเกรกอรีหรือก่อนเกรกอรี ใช้ได้กับค่าวัน 0 หรือมากกว่า[13][14] ตัวแปรทุกตัวเป็นจำนวนเต็มทั้งหมด หากมีเศษตัดทิ้ง

ตัวดำเนินการ ปัดลง(ตัวเลข) หมายถึงผลหารที่อยู่ในวงเล็บเมื่อคำนวณแล้วให้ยกเศษทศนิยมออก ตรงกับฟังก์ชัน floor ในภาษาโปรแกรมบางภาษา (อาทิ จาวาสคริปต์ ลูอา แมตแลบ) ส่วนตัวดำเนินการ เศษ(a,b คือการหารเอาเศษ เมื่อ a และ b แทนตัวตั้งและตัวหารตามลำดับ ตรงกับ mod หรือ fmod

ขั้นตอนวิธี

[แก้]
ขั้นตอนวิธีสำหรับปฏิทินเกรกอรี
ตัวแปร ค่า ตัวแปร ค่า
y 4716 v 3
j 1401 u 5
m 2 s 153
n 12 w 2
r 4 B 274277
p 1461 C −38

สำหรับปฏิทินจูเลียส:

1. f = J + j

สำหรับปฏิทินเกรกอรี:

1. f = J + j + ปัดลง((ปัดลง((4 × J + B) / 146097) × 3) / 4) + C

คำนวณ f แล้ว ทำต่อดังนี้:

2. e = r × f + v
3. g = ปัดลง(เศษ(e, p) / r)
4. h = u × g + w
5. D = ปัดลง((เศษ(h, s)) / u) + 1
6. M = เศษ(ปัดลง(h / s) + m, n) + 1
7. Y = ปัดลง(e / p) - y + ปัดลง((n + m - M) / n)

กำหนดให้ D, M, และ Y แทนวันที่ ลำดับเดือน และปีตามลำดับ

ตัวอย่างการคำนวณ

[แก้]

ค่าวันจูเลียส ข้อผิดพลาดสคริปต์: ไม่มีมอดูล "ตัวอย่างวันจูเลียส" แปลงกลับคืนเป็นวันที่ในปฏิทินเกรกอรีได้ตามขั้นตอนต่อไปนี้

1. f = ข้อผิดพลาดสคริปต์: ไม่มีมอดูล "ตัวอย่างวันจูเลียส" + 1401 + ปัดลง((ปัดลง((4*ข้อผิดพลาดสคริปต์: ไม่มีมอดูล "ตัวอย่างวันจูเลียส" + 274277) / 146097)*3) / 4) -38 = ข้อผิดพลาดสคริปต์: ไม่มีมอดูล "ตัวอย่างวันจูเลียส"
2. e = 4 × f + 3 = 4*ข้อผิดพลาดสคริปต์: ไม่มีมอดูล "ตัวอย่างวันจูเลียส" + 3 = ข้อผิดพลาดสคริปต์: ไม่มีมอดูล "ตัวอย่างวันจูเลียส"
3. g = ปัดลง(เศษ(e, 1461) / 4) = ปัดลง(เศษ(ข้อผิดพลาดสคริปต์: ไม่มีมอดูล "ตัวอย่างวันจูเลียส", 1461) / 4) = ข้อผิดพลาดสคริปต์: ไม่มีมอดูล "ตัวอย่างวันจูเลียส"
4. h = 5 × g + 2 = 5 × ข้อผิดพลาดสคริปต์: ไม่มีมอดูล "ตัวอย่างวันจูเลียส" + 2 = ข้อผิดพลาดสคริปต์: ไม่มีมอดูล "ตัวอย่างวันจูเลียส"
5. D = ปัดลง((เศษ(h, 153)) / 5) + 1 = ปัดลง((เศษ(ข้อผิดพลาดสคริปต์: ไม่มีมอดูล "ตัวอย่างวันจูเลียส", 153)) / 5) + 1 = ข้อผิดพลาดสคริปต์: ไม่มีมอดูล "ตัวอย่างวันจูเลียส"
6. M = เศษ(ปัดลง(h / 153) + 2, 12) + 1 = เศษ(ปัดลง(ข้อผิดพลาดสคริปต์: ไม่มีมอดูล "ตัวอย่างวันจูเลียส" / 153) + 2, 12) + 1 = ข้อผิดพลาดสคริปต์: ไม่มีมอดูล "ตัวอย่างวันจูเลียส"
7. Y = ปัดลง(e / 1461) - 4716 + ปัดลง((12 + 2 - M) / 12) = ปัดลง(ข้อผิดพลาดสคริปต์: ไม่มีมอดูล "ตัวอย่างวันจูเลียส" / 1461) - 4716 + ปัดลง((12 + 2 - ข้อผิดพลาดสคริปต์: ไม่มีมอดูล "ตัวอย่างวันจูเลียส") / 12) = ข้อผิดพลาดสคริปต์: ไม่มีมอดูล "ตัวอย่างวันจูเลียส"

สรุปผลการคำนวณ วันที่ ข้อผิดพลาดสคริปต์: ไม่มีมอดูล "ตัวอย่างวันจูเลียส" เดือน ข้อผิดพลาดสคริปต์: ไม่มีมอดูล "ตัวอย่างวันจูเลียส" () ค.ศ. ข้อผิดพลาดสคริปต์: ไม่มีมอดูล "ตัวอย่างวันจูเลียส" (พ.ศ. ข้อผิดพลาดนิพจน์: มีตัวดำเนินการ < ซึ่งไม่ควรมี)

อ้างอิงและหมายเหตุ

[แก้]

หมายเหตุ

[แก้]

เชิงอรรถ

[แก้]
  1. Dershowitz & Reingold 2008, 15.
  2. Seidelman 2013, 15.
  3. "Astronomical Almanac Online" 2016, Glossary, s.v. Julian date. Various timescales may be used with Julian date, such as Terrestrial Time (TT) or Universal Time (UT); in precise work the timescale should be specified.
  4. "Resolution B1" 1997.
  5. US Naval Observatory
  6. McCarthy & Guinot 2013, 91–2, 2005
  7. จาก Astronomical Almanac for the year 2017 หน้า B4 ระบุว่าปี พ.ศ. 2568 ตรงกับปี 6738 6730 ของยุคจูเลียส
  8. USDA c. 1963.
  9. L. E. Doggett, Ch. 12, "Calendars", p. 604, in Seidelmann 1992
  10. Meeus, Jean (1998). Astronomical Algorithms. Richmond, VA: Willman Bell. pp. 60–61.
  11. L. E. Doggett, Ch. 12, "Calendars", p. 606, in Seidelmann 1992
  12. Richards 2013, pp. 592, 618.
  13. Richards 2013, 617–9
  14. Richards 1998, 316

บรรณานุกรม

[แก้]