วิธีแปลง Timestamp เป็นวันที่ พร้อมตัวอย่าง

วิธีแปลง Timestamp เป็นวันที่ พร้อมตัวอย่าง

Timestamp (Unix time / Epoch) คือจำนวนวินาทีที่นับจากวันที่ 1 มกราคม 1970 เวลา 00:00:00 UTC เป็นต้นมา ใช้เก็บเวลาในฐานข้อมูลและ API ทั่วโลก

วิธีแปลง Timestamp เป็นวันที่

  1. นำ timestamp หาร 1000 (ถ้าเป็นหน่วยมิลลิวินาที)
  2. แปลงเป็นเวลามาตรฐาน UTC
  3. บวก 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)หมายเหตุ
01 มกราคม 1970 00:00:001 มกราคม 1970 07:00:00จุดเริ่มต้น Epoch
1,000,000,0009 กันยายน 2001 01:46:409 กันยายน 2001 08:46:40จำง่าย: พันล้านวินาที
1,700,000,00014 พฤศจิกายน 2023 22:13:2015 พฤศจิกายน 2023 05:13:20ช่วงเวลาที่ใช้บ่อยใน log/API
1,750,000,00015 มิถุนายน 2025 23:06:4016 มิถุนายน 2025 06:06:40ตัวอย่างจากบทความเดิม
2,000,000,00018 พฤษภาคม 2033 03:33:2018 พฤษภาคม 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