เครื่องมือแปลงเวลา Epoch
แปลง Unix timestamp เป็นวันที่ UTC หรือเปลี่ยนวันที่เป็นวินาที epoch
วิธีใช้งานเครื่องมือแปลงเวลา Epoch นี้
- เลือกโหมดการแปลง
เลือก Epoch เป็นวันที่ หรือ วันที่ เป็น Epoch ในช่องโหมดการแปลง
- สำหรับการแปลง Epoch เป็นวันที่
ป้อน Unix timestamp ในหน่วยวินาทีลงในช่อง Epoch timestamp (seconds)
- สำหรับการแปลงวันที่ เป็น Epoch
เลือกวันที่ใน Calendar date จากนั้นตั้งค่า Hour (UTC), Minute (UTC) และ Second (UTC) ตามต้องการ
- อ่านผลลัพธ์
เครื่องคำนวณจะแสดงค่า 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 วิธีแปลง 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 เพิ่มขึ้นอย่างต่อเนื่องเสมอ (ไม่รวมวินาทีอธิกสุรทิน) จึงเหมาะสำหรับการจัดเรียงเหตุการณ์ คำนวณระยะเวลา และสร้างตัวระบุเฉพาะตามเวลา
- IEEE Std 1003.1 (POSIX) — คำจำกัดความของ Seconds Since the Epoch
- ต้นกำเนิด Unix epoch — เอกสารจาก The Unix Heritage Society และ Bell Labs
- 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 แสนล้านปี