nicetool.dev logo
...

Unix Timestamp คืออะไร?

Unix Timestamp (หรือที่เรียกว่าเวลา POSIX หรือเวลา Epoch) เป็นระบบสำหรับติดตามเวลาเป็นจำนวนวินาทีที่นับต่อเนื่อง การนับนี้เริ่มต้นที่ 'Unix Epoch' เป็นรูปแบบเวลามาตรฐานที่ใช้โดยระบบคอมพิวเตอร์, เซิร์ฟเวอร์, และฐานข้อมูลส่วนใหญ่ทั่วโลก

The Unix Epoch

จุดเริ่มต้นถูกกำหนดเป็น 00:00:00 UTC ในวันที่ 1 มกราคม 1970 วันที่ก่อนหน้านี้จะแสดงเป็นจำนวนลบ

การแปลงเวลาเป็นวินาทีทั่วไป

เวลาที่มนุษย์อ่านได้วินาที
1 ชั่วโมง3,600 วินาที
1 วัน86,400 วินาที
1 สัปดาห์604,800 วินาที
1 เดือน (30.44 วัน)2,629,743 วินาที
1 ปี (365.24 วัน)31,556,926 วินาที

ปัญหาวันที่ปี 2038

คล้ายกับบั๊ก Y2K 'ปัญหาวันที่ปี 2038' คาดว่าจะเกิดขึ้นในวันที่ 19 มกราคม 2038 ในขณะนั้น เวลา Unix จะเกินค่าสูงสุดของจำนวนเต็ม 32 บิตแบบมีเครื่องหมาย ระบบ 32 บิตรุ่นเก่าอาจตีความวันที่นี้เป็นปี 1901 ซึ่งทำให้เกิดข้อผิดพลาดร้ายแรง

03:14:07 UTC 19/01/2038
Max Int32: 2,147,483,647

กรณีการใช้งานทั่วไป

ฐานข้อมูล

การเก็บเวลาเป็นจำนวนเต็ม (INT) ช่วยประหยัดพื้นที่และปรับปรุงประสิทธิภาพการสืบค้น/การเรียงลำดับอย่างมีนัยสำคัญ

ระบบไฟล์และบันทึก

การตั้งชื่อไฟล์สำรองหรือบันทึกของระบบเพื่อรับประกันความเป็นเอกลักษณ์และการเรียงลำดับตามลำดับเวลาที่ง่ายดาย

APIs และ Tokens

ใช้ใน JWTs (JSON Web Tokens) เพื่อกำหนดเวลาหมดอายุ (exp claim) และระยะเวลาที่ใช้ได้

วิธีใช้ เวลา Unix

  1. 1

    นาฬิกาสดด้านบนแสดงเวลา Unix ปัจจุบันเป็นวินาทีและมิลลิวินาที ใช้เมื่อคุณต้องการค่า "ตอนนี้" เป็น timestamp สำหรับการทดสอบหรือคำสั่งค้นหา

  2. 2

    วาง timestamp ลงในช่องแปลง เครื่องมือจะตรวจจับว่าเป็นวินาที (10 หลัก) หรือมิลลิวินาที (13 หลัก) แล้วแสดงวันเวลาแบบ UTC เวลาท้องถิ่น และแบบสัมพัทธ์ เช่น "3 วันที่แล้ว"

  3. 3

    หากต้องการแปลงกลับ ให้สลับเป็นโหมดวันที่ กรอกปี เดือน วัน เวลา เลือกเขตเวลา แล้วกดแปลง

  4. 4

    คัดลอกค่าใดก็ได้ด้วยคลิกเดียว นาฬิกาโลกด้านล่างแสดงเวลาเดียวกันในเมืองใหญ่ ช่วยเทียบ log ของเซิร์ฟเวอร์ในภูมิภาคอื่นกับเวลาไทย

ตัวอย่างการใช้งานจริง

อ่านไฟล์ log

log ของเซิร์ฟเวอร์และเครื่องมือมอนิเตอร์มักบันทึกเหตุการณ์เป็นตัวเลข เช่น 1712345678 วางตัวเลขเพื่อดูเวลาที่เกิดเหตุทั้งแบบ UTC และเวลาไทย

ตรวจสอบการหมดอายุของ JWT

claim exp และ iat ใน JSON Web Token เป็น Unix timestamp หน่วยวินาที เมื่อแปลงแล้วจะรู้ทันทีว่าโทเค็นหมดอายุหรือยัง

เขียนคำสั่งฐานข้อมูล

ต้องการคำสั่งซื้อหลังวันที่ 1 มีนาคม 2026 เวลา 00:00 UTC? แปลงวันที่เป็น 1772323200 แล้วใช้ใน WHERE กับคอลัมน์จำนวนเต็ม

ตรวจสอบผลลัพธ์ API

JavaScript คืนค่ามิลลิวินาที (Date.now()) แต่ backend ส่วนใหญ่คืนค่าวินาที เมื่อแสดงทั้งสองแบบ จะเห็นข้อผิดพลาดที่ต่างกัน 1000 เท่าได้ง่าย

คำถามที่พบบ่อย

Unix timestamp คืออะไร?+

คือจำนวนวินาทีที่ผ่านไปนับตั้งแต่ 00:00:00 UTC วันที่ 1 มกราคม 1970 หรือ Unix epoch เป็นตัวเลขเดียวที่ไม่มีเขตเวลา จึงเป็นวิธีที่ง่ายที่สุดสำหรับคอมพิวเตอร์ในการเก็บและเปรียบเทียบเวลา

แยกวินาทีกับมิลลิวินาทีอย่างไร?+

สำหรับวันที่ปัจจุบัน หน่วยวินาทีมี 10 หลัก ส่วนมิลลิวินาทีมี 13 หลัก เครื่องมือ Unix, PHP และฐานข้อมูลส่วนใหญ่ใช้วินาที ส่วน JavaScript และ Java ใช้มิลลิวินาที

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

ระบบที่เก็บ timestamp เป็นจำนวนเต็มแบบมีเครื่องหมาย 32 บิตจะล้นในวันที่ 19 มกราคม 2038 เวลา 03:14:07 UTC ภาษาสมัยใหม่และฐานข้อมูล 64 บิตไม่ได้รับผลกระทบ แต่ระบบฝังตัวรุ่นเก่าและบางรูปแบบไฟล์ยังมีปัญหานี้

นับวินาทีอธิกวารด้วยหรือไม่?+

ไม่นับ เวลา Unix ถือว่าทุกวันมี 86,400 วินาทีพอดี จึงไม่นับวินาทีอธิกวาร สำหรับการใช้งานเกือบทั้งหมดไม่มีผลในทางปฏิบัติ