วิธีแปลง Timestamp เป็นวันที่ พร้อมตัวอย่าง
2026-08-13
วิธีแปลง Timestamp เป็นวันที่ พร้อมตัวอย่าง
Timestamp (Unix time / Epoch) คือจำนวนวินาทีที่นับจากวันที่ 1 มกราคม 1970 เวลา 00:00:00 UTC เป็นต้นมา ใช้เก็บเวลาในฐานข้อมูลและ API ทั่วโลก
วิธีแปลง Timestamp เป็นวันที่
- นำ timestamp หาร 1000 (ถ้าเป็นหน่วยมิลลิวินาที)
- แปลงเป็นเวลามาตรฐาน UTC
- บวก 7 ชั่วโมงเพื่อเป็นเวลาไทย (GMT+7)
ตัวอย่าง
Timestamp 1750000000:
- UTC: 15 มิถุนายน 2025, 23:06:40
- เวลาไทย: 16 มิถุนายน 2025, 06:06:40
ตัวอย่างการใช้งานจริง
- ฐานข้อมูลเก็บ timestamp เพื่อเรียงลำดับเหตุการณ์
- API ส่งเวลาเป็น UTC เพื่อหลีกเลี่ยงปัญหาภูมิภาค
- เซสชันล็อกอินและวันหมดอายุ token
จำง่ายๆ
- 1,000,000,000 = กันยายน 2001
- 2,000,000,000 = พฤษภาคม 2033 (Y2038 ที่เป็นปัญหาในบางระบบเก่า)
ลองใช้ เครื่องแปลง Timestamp เพื่อแปลงทันที
ตารางตัวอย่างการแปลง Timestamp เป็นวันที่
Timestamp (Unix time / Epoch) คือจำนวนวินาทีที่นับจากวันที่ 1 มกราคม 1970 เวลา 00:00:00 UTC เป็นต้นมา ใช้เก็บเวลาในฐานข้อมูลและ API ทั่วโลก การแปลงให้ถูกต้องมี 3 ขั้นตอนหลัก: 1) นำ timestamp หาร 1000 ถ้าเป็นหน่วยมิลลิวินาที 2) แปลงเป็นเวลามาตรฐาน UTC 3) บวก 7 ชั่วโมงเพื่อเป็นเวลาไทย (GMT+7)
| Timestamp (วินาที) | UTC | เวลาไทย (GMT+7) | หมายเหตุ |
|---|---|---|---|
| 0 | 1 มกราคม 1970 00:00:00 | 1 มกราคม 1970 07:00:00 | จุดเริ่มต้น Epoch |
| 1,000,000,000 | 9 กันยายน 2001 01:46:40 | 9 กันยายน 2001 08:46:40 | จำง่าย: พันล้านวินาที |
| 1,700,000,000 | 14 พฤศจิกายน 2023 22:13:20 | 15 พฤศจิกายน 2023 05:13:20 | ช่วงเวลาที่ใช้บ่อยใน log/API |
| 1,750,000,000 | 15 มิถุนายน 2025 23:06:40 | 16 มิถุนายน 2025 06:06:40 | ตัวอย่างจากบทความเดิม |
| 2,000,000,000 | 18 พฤษภาคม 2033 03:33:20 | 18 พฤษภาคม 2033 10:33:20 | ตัวเลขอนาคต; ระบบ 32-bit signed มีข้อจำกัดใกล้ Y2038 |
กรณีใช้จริงในชีวิตไทย
- ฐานข้อมูลเก็บ timestamp เพื่อเรียงลำดับเหตุการณ์ เช่น วันสมัครสมาชิก เวลาสร้างออเดอร์ เวลาอัปเดตโปรไฟล์ หรือเวลาที่ระบบบันทึก log
- API ส่งเวลาเป็น UTC เพื่อหลีกเลี่ยงปัญหาภูมิภาค เมื่อผู้ใช้เปิดแอปในไทยจึงแปลงเป็น GMT+7 ให้ตรงกับนาฬิกาบนมือถือ
- เซสชันล็อกอินและวันหมดอายุ token มักเก็บเป็น epoch เพื่อคำนวณว่าเหลือกี่วินาที หรือหมดอายุแล้วหรือยัง
- ระบบจองคิวโรงพยาบาล คลินิก หรือบริการภาครัฐ/เอกชน ใช้ timestamp บันทึกเวลาที่กดจอง แล้วแสดงเป็นวันที่และเวลาไทยให้ผู้ใช้เข้าใจ
- แอปส่งอาหารและขนส่ง ใช้ timestamp เปรียบเทียบเวลาออเดอร์ เวลาเตรียมอาหาร และเวลาส่งถึง เพื่อคำนวณความล่าช้าหรือแสดงสถานะแบบเรียลไทม์
ข้อผิดพลาดที่พบบ่อย
- ลืมดูหน่วย: ค่า 13 หลักมักเป็นมิลลิวินาที ต้องหาร 1000 ก่อนแปลงเป็นวินาที
- สับสน UTC กับเวลาไทย: เวลาไทยเร็วกว่า UTC 7 ชั่วโมง แต่บางเครื่องมือตั้งโซนเวลาไว้ต่างหาก
- ใช้เวลาท้องถิ่นของเซิร์ฟเวอร์: ถ้าเซิร์ฟเวอร์อยู่ต่างประเทศหรือตั้งโซนเวลาผิด ค่าที่บันทึกจะเพี้ยน
- ไม่ทดสอบด้วยค่าที่รู้คำตอบ: ควรลอง 0, 1,000,000,000, 1,750,000,000, 2,000,000,000
- มองข้ามข้อจำกัดระบบเก่า: ตัวเลข 2,000,000,000 ตรงกับพฤษภาคม 2033 และปัญหา Y2038 ยังเป็นเรื่องที่ต้องระวังในบางระบบ
Q&A 5 ข้อพร้อมคำตอบเต็ม
Timestamp ต่างจาก datetime อย่างไร?
Timestamp เป็นตัวเลขจำนวนเต็มหรือทศนิยมที่นับวินาทีจาก Epoch ทำให้คำนวณผลต่างเวลาได้ง่าย ส่วน datetime เป็นรูปแบบข้อความหรืออ็อบเจกต์ที่อ่านง่าย เช่น 2025-06-16 06:06:40 ระบบที่ดีมักเก็บเป็น timestamp หรือ UTC datetime แล้วแปลงเป็น datetime ท้องถิ่นตอนแสดงผล
ทำไม API มักส่งเวลาเป็น UTC?
เพราะ UTC เป็นมาตรฐานกลาง ไม่เปลี่ยนตามโซนเวลาหรือเวลาออมแสงของท้องถิ่น ผู้ใช้ไทยสามารถบวก 7 ชั่วโมงเพื่อแสดงเวลาไทยได้ทันที ลดปัญหาการตีความเวลาผิดเมื่อระบบมีผู้ใช้หลายประเทศ
ถ้า timestamp เป็น 13 หลักต้องทำอย่างไร?
ค่า 13 หลักมักเป็นมิลลิวินาที เช่น 1750000000000 ต้องหารด้วย 1000 ให้เหลือ 1750000000 ก่อนแปลงเป็นวินาที จากนั้นจึงคำนวณเป็น UTC และเวลาไทยตามปกติ
เวลาไทยต่างจาก UTC กี่ชั่วโมง?
ประเทศไทยใช้ UTC+7 หรือ GMT+7 ตลอดทั้งปี ไม่มีเวลาออมแสง ดังนั้นเมื่อได้เวลา UTC แล้วให้บวก 7 ชั่วโมงเพื่อเป็นเวลาที่ผู้ใช้ในไทยเห็น
ควรใช้เครื่องมือออนไลน์หรือเขียนโค้ดเอง?
ถ้าต้องการแปลงเร็ว ๆ ตรวจสอบค่า หรือทำรายงาน ควรใช้ เครื่องแปลง Timestamp เพราะลดความผิดพลาดเรื่องหน่วยและโซนเวลา แต่ถ้าต้องแปลงอัตโนมัติในแอปหรือฐานข้อมูล ควรเขียนโค้ดและทดสอบด้วยค่ามาตรฐานหลายชุด
วิธีทำเอง vs ใช้เครื่องมือ
วิธีทำเองเหมาะกับนักพัฒนา: รับค่า timestamp, ตรวจว่าเป็นวินาทีหรือมิลลิวินาที, สร้างอ็อบเจกต์เวลาจาก epoch, ตั้งค่าเป็น UTC, แล้วเพิ่ม 7 ชั่วโมงหรือใช้โซนเวลา Asia/Bangkok วิธีนี้ควบคุมได้และฝังในระบบได้ แต่ต้องระวังการปัดเศษและ library ที่ต่างกัน
วิธีใช้เครื่องมือเหมาะกับงานทั่วไป: วางค่า timestamp, เลือกหน่วย, เลือกโซนเวลา, แล้วอ่านผลลัพธ์เป็นวันที่/เวลาไทย เหมาะกับการตรวจสอบ log, แก้ ticket, ทำเอกสาร หรือสอนทีมให้เข้าใจตรงกันโดยไม่ต้องเขียนโค้ดทุกครั้ง
เคล็ดลับจากประสบการณ์
- เก็บเวลาในฐานข้อมูลเป็น UTC หรือ epoch ให้สม่ำเสมอ อย่าปนเวลาท้องถิ่น
- ตั้งชื่อฟิลด์ให้ชัด เช่น created_at_ms, expires_at_seconds เพื่อไม่ให้ลืมหน่วย
- แสดงผลให้ผู้ใช้เป็นวันที่/เวลาไทยเสมอ แต่ใน log ภายในควรเก็บ UTC ด้วย
- ทดสอบด้วยค่าจำง่าย: 1,000,000,000 = กันยายน 2001 และ 2,000,000,000 = พฤษภาคม 2033
- ถ้าระบบเก่าใช้ integer 32-bit ให้วางแผนย้ายไป 64-bit หรือ datetime ก่อนถึงข้อจำกัดใกล้ Y2038