Unix timestamp ติดลบหมายความว่าอะไร?
แสดงถึงวันที่ก่อน 1 มกราคม 1970 เช่น -86400 คือวันที่ 31 ธันวาคม 1969 JavaScript ก็สามารถจัดการ timestamp ติดลบได้อย่างถูกต้อง
แปลง Unix timestamp เป็นวันที่และกลับกัน
Unix ถูกพัฒนาในปี 1969-1970 นักพัฒนาเลือก 1 มกราคม 1970 เป็นจุดอ้างอิงเพราะสะดวกและง่ายต่อการประมวลผลบนคอมพิวเตอร์ในยุคนั้น
แสดงถึงวันที่ก่อน 1 มกราคม 1970 เช่น -86400 คือวันที่ 31 ธันวาคม 1969 JavaScript ก็สามารถจัดการ timestamp ติดลบได้อย่างถูกต้อง
ใช้ Date.now() เพื่อได้ timestamp หน่วยมิลลิวินาที หรือ Math.floor(Date.now()/1000) สำหรับหน่วยวินาที new Date().getTime() ให้ค่าเดียวกับ Date.now()
Unix timestamp คือวิธีที่คอมพิวเตอร์ใช้เก็บเวลาแบบสากล — จำนวนวินาที (หรือมิลลิวินาที) ที่ผ่านไปนับตั้งแต่ 1 มกราคม 1970 UTC (Unix epoch) แสดงเป็นตัวเลขจำนวนเต็มง่ายๆ ระบบปฏิบัติการ ฐานข้อมูล และ API ต่างๆ ใช้มาตรฐานนี้ในการจัดการวันและเวลา เนื่องจากไม่ขึ้นกับเขตเวลา จึงเหมาะสำหรับระบบที่ใช้งานระดับนานาชาติ
10 หลักคือวินาที (เช่น 1700000000) และ 13 หลักคือมิลลิวินาที (เช่น 1700000000000) Date.now() ใน JavaScript คืนค่าเป็นมิลลิวินาที ส่วน system call ของ Unix/Linux ใช้วินาที คุณสามารถดูจำนวนหลักเพื่อระบุหน่วยได้เลย
Timestamp เป็นจำนวนเต็มธรรมดา เปรียบเทียบ เรียงลำดับ และคำนวณผลต่างได้ง่าย สตริงวันที่อย่าง YYYY-MM-DD มักก่อให้เกิดความสับสนเรื่องรูปแบบและเขตเวลา แต่ timestamp อ้างอิง UTC เสมอจึงชัดเจนไม่คลุมเครือ นอกจากนี้ยังประหยัดพื้นที่จัดเก็บและเอื้อต่อการทำ index ในฐานข้อมูล
Unix timestamp ใช้ UTC (Coordinated Universal Time) เสมอ ประเทศไทยอยู่ในเขต UTC+7 ดังนั้นเมื่อแสดงผลต้องบวกเพิ่ม 7 ชั่วโมง แนวทางที่ดีที่สุดคือเก็บข้อมูลเป็น UTC และแปลงเป็นเวลาท้องถิ่นเฉพาะเมื่อแสดงผลให้ผู้ใช้
Unix timestamp ที่เก็บเป็นจำนวนเต็ม 32 บิตแบบมีเครื่องหมายจะล้นในวันที่ 19 มกราคม 2038 เวลา 03:14:07 UTC เรียกว่าปัญหา Y2K38 ระบบ 64 บิตไม่ได้รับผลกระทบ แต่ระบบฝังตัวและระบบเก่าๆ ยังมีความเสี่ยงและควรวางแผนอัปเกรดล่วงหน้า