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

วันจูเลียส

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

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

วันจูเลียสมีประโยชน์ในหลายด้าน อาทิ ช่วยให้คำนวณเหตุการณ์ต่าง ๆ ที่แยกจากกัน อาทิ วันผลิตและวันหมดอายุของสินค้า อายุของบุคคลตั้งแต่เกิดจนถึงปัจจุบัน (เรียกว่า อายุชำระ) วันรับตัวและปล่อยตัวผู้ต้องขัง (กรณีกฎหมายกำหนดให้นับโทษเป็นวัน) วันเริ่มต้นและสิ้นสุดโครงการ (กรณีนับเป็นวัน) และอื่น ๆ โดยให้ตั้งวันจูเลียสของวันสิ้นสุด แล้วเอาวันจูเลียสของวันเริ่มต้นลบ ได้เท่าใดเอา 1 บวก ก็จะได้จำนวนวันตามความประสงค์ต่อไป เหตุผลที่บวก 1 เพราะว่าการลบปกติจะถือว่านับวันแรกเป็นวันที่ 0[6] นอกจากนี้ เหตุการณ์ทางดาราศาสตร์ต่าง ๆ ซึ่งเกิดขึ้นบนท้องฟ้า หากใช้วันที่ เดือน ปี ตามปกติเมื่อจะหาความสัมพันธ์ระหว่างกันก็จะเป็นความยากลำบากซับซ้อน ทำให้นักดาราศาสตร์และนักโหราศาสตร์ต้องแปลงตัวเลขจากวันที่ เดือน ปี ให้เป็นตัวเลขเดียวกันก่อนตามแบบของปฏิทิน ซึ่งจะมีแยกต่างกันออกไปไม่เหมือนกัน โดยนักดาราศาสตร์จะแปลงวันที่เป็นวันจูเลียสก่อน แล้วจึงนำไปคำนวณตามสูตรหรือนำไปปรับค่าความสัมพันธ์กับตัวแปรทางดาราศาสตร์ (อาทิ องศาปรากฎของดาวเคราะห์) ทำให้กระบวนการต่าง ๆ ง่ายกว่าการใช้วันที่ เดือน ปี ซึ่งมีสามตัวแปร

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

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

[แก้]

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

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

[แก้]

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

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 คือ ปี (ตามค.ศ.) เดือน และวันในเดือน ตามลำดับ

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

  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

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

[แก้]

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

วิธีที่ 1

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

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

วิธีที่ 2

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

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

[แก้]

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

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)[13]

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

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

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

[แก้]

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

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

ขั้นตอนวิธี

[แก้]
ขั้นตอนวิธีสำหรับปฏิทินเกรกอรี
ตัวแปร ค่า ตัวแปร ค่า
y4716v3
j1401u5
m2s153
n12w2
r4B274277
p1461C−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. อารี สวัสดี. "เรื่องที่ควรรู้ ดูเหมือนจะเข้าใจ" เผยแพร่ในวารสารมูลนิธีสมาคมโหรแห่งประเทศไทย. 24 พฤศจิกายน 2557
    2. วรพล ไม้สน. พระคัมภีร์สุริยยาตรฉบับเฉลิมพระกียรติพระจอมเกล้า. ม.ป.ป.
    3. Dershowitz & Reingold 2008, 15.
    4. Seidelman 2013, 15.
    5. "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.
    6. "Julian Date". (n.d.). Defit's Definitions of Information Technology Terms. Brainsoft.
    7. "Resolution B1" 1997.
    8. US Naval Observatory
    9. McCarthy & Guinot 2013, 91–2, 2005
    10. L. E. Doggett, Ch. 12, "Calendars", p. 604, in Seidelmann 1992
    11. Meeus, Jean (1998). Astronomical Algorithms. Richmond, VA: Willman Bell. pp. 60–61.
    12. L. E. Doggett, Ch. 12, "Calendars", p. 606, in Seidelmann 1992
    13. Richards 2013, pp. 592, 618.
    14. Richards 2013, 617–9
    15. Richards 1998, 316

    บรรณานุกรม

    [แก้]