เครื่องมือแปลงเวลา Epoch

แปลง Unix timestamp เป็นวันที่ UTC หรือเปลี่ยนวันที่เป็นวินาที epoch

เลือกว่าจะแปลง timestamp เป็นวันที่ หรือแปลงวันที่เป็น timestamp
ป้อน Unix timestamp ในหน่วยวินาที

ค่าที่แปลงแล้ว

2024-03-09T16:00:00.000Z

ค่า UTC2024-03-09T16:00:00.000Z
Unix มิลลิวินาที1,710,000,000,000
วันในสัปดาห์วันเสาร์

วิธีใช้งานเครื่องมือแปลงเวลา Epoch นี้

  1. เลือกโหมดการแปลง

    เลือก Epoch เป็นวันที่ หรือ วันที่ เป็น Epoch ในช่องโหมดการแปลง

  2. สำหรับการแปลง Epoch เป็นวันที่

    ป้อน Unix timestamp ในหน่วยวินาทีลงในช่อง Epoch timestamp (seconds)

  3. สำหรับการแปลงวันที่ เป็น Epoch

    เลือกวันที่ใน Calendar date จากนั้นตั้งค่า Hour (UTC), Minute (UTC) และ Second (UTC) ตามต้องการ

  4. อ่านผลลัพธ์

    เครื่องคำนวณจะแสดงค่า UTC, Unix มิลลิวินาที และวันในสัปดาห์

ระเบียบวิธีคำนวณ

วิธีการทำงานของเครื่องมือแปลงเวลา epoch นี้

เครื่องมือแปลงเวลา epoch นี้ใช้สำหรับแปลงระหว่าง Unix timestamp และวันที่ UTC ที่มนุษย์อ่านได้ Unix time หรือที่เรียกว่า POSIX time หรือ epoch time คือการนับจำนวนวินาทีที่ผ่านไปนับตั้งแต่ Unix epoch ซึ่งกำหนดไว้ที่เวลาเที่ยงคืน UTC ของวันที่ 1 มกราคม 1970 (1970-01-01T00:00:00Z) การแสดงผลด้วยตัวเลขจำนวนเต็มชุดเดียวนี้เป็นมาตรฐานสากลสำหรับการจัดเก็บและส่งข้อมูลเวลาในฐานข้อมูล, API, ไฟล์ log, JWT token และภาษาโปรแกรมสมัยใหม่เกือบทุกภาษา เครื่องมือนี้รองรับการแปลงทั้งสองทิศทาง: การระบุตัวเลข timestamp จะแสดงวันที่ UTC, วันในสัปดาห์ และค่ามิลลิวินาทีที่เกี่ยวข้อง ในขณะที่การระบุวันที่และเวลาตามปฏิทินจะแสดงค่า epoch ในหน่วยวินาทีและมิลลิวินาที

สูตร
Unix time = จำนวนวินาทีที่ผ่านไปนับตั้งแต่ 1970-01-01T00:00:00Z
epoch จุดอ้างอิง: เที่ยงคืน UTC ของวันที่ 1 มกราคม 1970 (Unix timestamp 0)
เวลา Unix (วินาที) จำนวนวินาทีเต็มทั้งหมดจากจุดเริ่มต้น (epoch) จนถึงวันที่และเวลาที่ระบุ
เวลา Unix (มิลลิวินาที) เวลา Unix ในหน่วยวินาทีคูณด้วย 1,000 — ใช้โดย JavaScript Date, Java System.currentTimeMillis() และ API จำนวนมาก
วันที่ UTC วันที่ตามปฏิทินเกรกอเรียนและเวลาแบบ 24 ชั่วโมงที่ตรงกับประทับเวลาที่กำหนด
วันในสัปดาห์ ชื่อวันในสัปดาห์ที่ได้จากการแปลงวันที่ UTC
ตัวอย่าง

วิธีแปลง Unix timestamp 1,700,000,000 เป็นวันที่: เริ่มจาก 1970-01-01 00:00:00 UTC บวกเพิ่ม 1,700,000,000 วินาที ซึ่งเท่ากับ 19,675 วัน 17 ชั่วโมง 46 นาที และ 40 วินาที วันที่ UTC ที่ได้คือ 2023-11-14 เวลา 22:13:20 UTC ซึ่งตรงกับวันอังคาร ค่ามิลลิวินาทีคือ 1,700,000,000,000 ในทางกลับกัน หากป้อนวันที่ 14 พฤศจิกายน 2023 เวลา 22:13:20 UTC จะได้ค่า epoch เท่ากับ 1,700,000,000 พอดี

Timestamp 0 แปลงเป็น 1970-01-01 00:00:00 UTC (วันพฤหัสบดี) ค่ามิลลิวินาทีที่เทียบเท่าคือ 0

Timestamp 1,704,000,000 แปลงเป็น 2023-12-31 12:00:00 UTC (วันอาทิตย์) การป้อนวันที่และเวลานั้นในโหมด Date to epoch จะได้ค่า 1,704,000,000

ข้อสมมติฐาน
  • การคำนวณทั้งหมดอยู่ในรูปแบบ UTC การแปลงเป็นเวลาท้องถิ่นจำเป็นต้องปรับค่าชดเชยเขตเวลา (time-zone offset) ที่เหมาะสมหลังการแปลง
  • ไม่นับรวมวินาทีอธิกสุรทิน (Leap seconds) เช่นเดียวกับ POSIX ตัวแปลงนี้จะถือว่าทุกวันมี 86,400 วินาทีพอดี ซึ่งตรงกับการทำงานของภาษาโปรแกรมและระบบปฏิบัติการส่วนใหญ่
  • ประทับเวลาที่เป็นลบหมายถึงวันที่ก่อนจุดเริ่มต้น (1 มกราคม 1970) ตัวอย่างเช่น −86400 ตรงกับวันที่ 31 ธันวาคม 1969
  • ประทับเวลาในหน่วยมิลลิวินาทีควรหารด้วย 1,000 ก่อนป้อนข้อมูล ตัวแปลงนี้รับข้อมูลเข้าเป็นวินาทีและแสดงผลลัพธ์ที่เทียบเท่าในหน่วยมิลลิวินาที
หมายเหตุ
  • Date.now() ของ JavaScript และ System.currentTimeMillis() ของ Java คืนค่าเป็นมิลลิวินาที ไม่ใช่วินาที — ให้หารด้วย 1,000 ก่อนป้อนค่า หรือใช้ค่ามิลลิวินาทีเพื่อเปรียบเทียบ
  • ปัญหาปี 2038 กระทบต่อ timestamp แบบเลขจำนวนเต็ม 32 บิต ซึ่งจะเกิดการล้นในวันที่ 19 มกราคม 2038 เวลา 03:14:07 UTC ระบบสมัยใหม่ส่วนใหญ่เปลี่ยนไปใช้ timestamp แบบ 64 บิตแล้ว
  • เมื่อตรวจสอบ API หรือ log ให้สังเกต timestamp ที่คลาดเคลื่อนไป 3,600 หรือ 7,200 วินาที ซึ่งมักหมายถึงมีการใช้ (หรือลืมใช้) การชดเชยเขตเวลาในระบบ
  • เวลา Epoch เพิ่มขึ้นอย่างต่อเนื่องเสมอ (ไม่รวมวินาทีอธิกสุรทิน) จึงเหมาะสำหรับการจัดเรียงเหตุการณ์ คำนวณระยะเวลา และสร้างตัวระบุเฉพาะตามเวลา
แหล่งที่มา
  1. IEEE Std 1003.1 (POSIX) — คำจำกัดความของ Seconds Since the Epoch
  2. ต้นกำเนิด Unix epoch — เอกสารจาก The Unix Heritage Society และ Bell Labs
  3. RFC 3339 — วันที่และเวลาบนอินเทอร์เน็ต: Timestamps

Unix timestamp คืออะไร?

Unix timestamp คือจำนวนวินาทีที่ผ่านพ้นไปนับตั้งแต่เวลาเที่ยงคืน UTC ของวันที่ 1 มกราคม 1970 หรือ Unix epoch จำนวนเต็มนี้เป็นมาตรฐานหลักในการแสดงเวลาในฐานข้อมูล, API, ไฟล์บันทึก และภาษาโปรแกรมส่วนใหญ่ เนื่องจากไม่ขึ้นกับเขตเวลาและมีค่าเพิ่มขึ้นเรื่อยๆ จึงช่วยให้การจัดเรียง การคำนวณระยะเวลา และการเปรียบเทียบเวลาทำได้ง่ายขึ้น JavaScript's Date.now() และ API จำนวนมากจะคืนค่าเป็นมิลลิวินาที (1,000 × วินาที) ดังนั้นควรหารด้วย 1,000 ก่อนป้อนค่ามิลลิวินาทีที่นี่ ค่า timestamp ที่เป็นลบหมายถึงวันที่ก่อนปี 1970 เช่น -86400 คือหนึ่งวันก่อนหน้า epoch พอดี

กรณีการใช้งาน Epoch time สำหรับนักพัฒนา

นักพัฒนาใช้ Unix timestamp เมื่อจัดเก็บเวลาในฐานข้อมูล, แปลงวันที่ใน JSON API, สร้างคีย์แคช และตรวจสอบไฟล์บันทึก คอลัมน์ฐานข้อมูลมักเก็บ timestamp เป็นจำนวนเต็มเพื่อประสิทธิภาพในการทำดัชนีและการค้นหา การตอบกลับของ API มักใช้หน่วยวินาทีหรือมิลลิวินาทีเพื่อเลี่ยงความสับสนเรื่องเขตเวลา เมื่อดีบัก การแปลง timestamp ดิบจาก log หรือ JWT claim เป็นวันที่ที่อ่านง่ายจะช่วยตรวจสอบความถูกต้องได้ทันที นอกจากนี้ยังใช้สำหรับการจำกัดอัตราการใช้งาน, การหมดอายุเซสชัน และการสร้างตัวระบุในระบบแบบกระจาย

คำถามที่พบบ่อยเกี่ยวกับตัวแปลงเวลา Epoch

Unix epoch คืออะไร?

Unix epoch คือจุดอ้างอิงสำหรับวัดเวลา Unix: คือเวลาเที่ยงคืน UTC ของวันที่ 1 มกราคม 1970 (1970-01-01T00:00:00Z) โดยค่า timestamp 0 จะตรงกับช่วงเวลานั้นพอดี

ทำไม timestamp ของ JavaScript ถึงมีจำนวนหลักมากกว่า?

Date.now() ของ JavaScript จะคืนค่าเป็นมิลลิวินาทีนับจาก epoch ไม่ใช่วินาที ให้หารด้วย 1,000 เพื่อแปลงเป็นรูปแบบวินาทีที่เครื่องมือนี้ใช้ หรือเปรียบเทียบกับผลลัพธ์มิลลิวินาทีโดยตรง

ฉันสามารถป้อนค่า timestamp ติดลบได้หรือไม่?

ได้ ค่าลบแสดงถึงวันที่ก่อน epoch ตัวอย่างเช่น −86400 ตรงกับ 1969-12-31T00:00:00Z ซึ่งเป็นเวลาหนึ่งวันก่อน epoch พอดี

เครื่องมือนี้รองรับวินาทีอธิกสุรทิน (leap seconds) หรือไม่?

ไม่ และนี่เป็นไปตามมาตรฐาน POSIX เวลา POSIX กำหนดให้ทุกวันมี 86,400 วินาทีพอดี วินาทีอธิกสุรทิน 27 วินาทีที่เพิ่มเข้ามาตั้งแต่ปี 1972 ไม่ได้ถูกนับแยกต่างหาก ซึ่งหมายความว่าเวลา UTC และ Unix อาจต่างกันได้ถึงหนึ่งวินาทีในช่วงรอยต่อของวินาทีอธิกสุรทิน

ปัญหาปี ค.ศ. 2038 คืออะไร?

ระบบที่เก็บเวลา Unix เป็นจำนวนเต็มแบบมีเครื่องหมายขนาด 32 บิต จะเกิดปัญหาค่าล้น (overflow) ในวันที่ 19 มกราคม 2038 เวลา 03:14:07 UTC โดยจะวนกลับไปเป็นค่าลบจำนวนมากและแสดงวันที่ในปี 1901 แพลตฟอร์มสมัยใหม่ส่วนใหญ่ใช้ timestamp แบบ 64 บิต ซึ่งจะไม่เกิดค่าล้นไปอีกกว่า 2.9 แสนล้านปี

เขียนโดย ยาน เครเนก ผู้ก่อตั้งและนักพัฒนาหลัก
ตรวจสอบโดย การตรวจสอบระเบียบวิธีของ DigitSum การตรวจสอบสูตรและ QA
อัปเดตล่าสุดเมื่อ 10 มี.ค. 2569

ใช้ข้อมูลนี้เพื่อการประมาณการเท่านั้น และควรตรวจสอบการตัดสินใจที่สำคัญกับผู้เชี่ยวชาญที่มีคุณสมบัติเหมาะสม

ข้อมูลที่ป้อนจะถูกเก็บไว้ในเบราว์เซอร์ เว้นแต่จะมีฟีเจอร์ในอนาคตแจ้งให้คุณทราบเป็นอย่างอื่น