ช่วยแก้ปัญหา
แปลง Unix Timestamp เป็นวันที่: วินาที มิลลิวินาที และ UTC
แปลง Unix timestamp เป็นวันที่ ดูความต่างวินาทีกับมิลลิวินาที UTC กับเวลาท้องถิ่น ISO 8601 และวิธีแปลงวันที่ย้อนกลับเป็น epoch
Unix timestamp แทนเวลาเทียบกับ Unix epoch คือ 1970-01-01 00:00:00 UTC มักเก็บเป็นวินาทีนับจาก epoch หรือมิลลิวินาทีนับจาก epoch
จะแปลงให้ถูกต้องรู้หน่วยก่อน 1720000000 วินาทีคือ 2024-07-03 09:46:40 UTC ส่วน 1720000000000 มิลลิวินาทีคือช่วงเวลาเดียวกัน
timestamp ชี้จุดเวลาหนึ่งจุด UTC เวลาท้องถิ่น หรือโซน IANA เปลี่ยนแค่วิธีแสดงจุดนั้น
นี่คือคู่มือแปลง timestamp เป็นวันที่ วันที่เป็น timestamp UTC กับท้องถิ่น และ ISO 8601 ถ้าค่ากลายเป็น 1970 ทันที มักเพราะหน่วยวินาที/มิลลิวินาทีไม่ตรง ดู Unix Timestamp วินาทีกับมิลลิวินาที: ทำไมวันที่ขึ้น 1970
Unix timestamp คืออะไร
Unix timestamp, Unix time และ epoch time มักหมายถึงเวลาที่ผ่านไปนับจาก 1970-01-01 00:00:00 UTC ตัวเลขเองไม่ใช่สตริงวันที่ที่มีป้ายเขตเวลา จุดเวลาเดียวกันอาจขึ้นนาฬิกาต่างกันใน UTC นิวยอร์ก โตเกียว หรือโซล Unix timestamp ไม่ได้เป็นวินาทีเสมอ มิลลิวินาทีก็พบได้บ่อยในงานจริง
Unix epoch คืออะไร
Unix epoch คือ 1970-01-01 00:00:00 UTC timestamp 0 คือจุดนั้น ค่าบวกอยู่หลัง epoch บางระบบอนุญาตค่าลบสำหรับเวลาก่อน epoch แต่การรองรับของภาษาและช่วงวันที่ไม่เหมือนกัน
timestamp ของฉันเป็นวินาทีหรือมิลลิวินาที
1720000000 เป็นวินาที 1720000000000 เป็นมิลลิวินาที ทั้งคู่คือช่วงเวลาเดียวกัน เบาะแสที่ใช้ได้: ประมาณ 10 หลักมักเป็นวินาที ประมาณ 13 หลักมักเป็นมิลลิวินาที จำนวนหลักเป็นเพียง heuristic วันที่อดีตหรืออนาคต หน่วยอื่น หรือ epoch แบบกำหนดเองอาจดูต่าง ตัวแปลงวันที่และเวลา แปลงได้ด้วยวินาที มิลลิวินาที หรืออัตโนมัติ (≤10 หลักเป็นวินาที ≥13 เป็นมิลลิวินาที) เลือกหน่วยเองเมื่อรู้แล้ว
ทำไมหน่วยผิดแล้ววันที่ผิด
JavaScript Date คาดมิลลิวินาที ส่ง 1720000000 ราวกับเป็นมิลลิวินาทีจะได้ 1970-01-20 21:46:40 UTC ถือมิลลิวินาทีเป็นวินาทีหรือกลับกัน จะตกวันที่คนละเรื่อง สำหรับเส้นทาง 1970 ดู Unix Timestamp วินาทีกับมิลลิวินาที: ทำไมวันที่ขึ้น 1970
new Date(1720000000);
// 1970-01-20T21:46:40.000Z
วิธีแปลง Unix timestamp หน่วยวินาที
คูณวินาทีด้วย 1000 เพื่อได้มิลลิวินาที JavaScript Date อิงมิลลิวินาที จึงใช้ new Date(timestamp * 1000)
const timestamp = 1720000000;
const date = new Date(timestamp * 1000);
date.toISOString();
// 2024-07-03T09:46:40.000Z
วิธีแปลง timestamp มิลลิวินาที
ส่งมิลลิวินาทีให้ Date โดยตรง อย่าคูณ timestamp ที่เป็นมิลลิวินาทีด้วย 1000 อีก
const timestamp = 1720000000000;
const date = new Date(timestamp);
date.toISOString();
// 2024-07-03T09:46:40.000Z
ทำไม timestamp เดียวกันขึ้นคนละเวลา
Unix timestamp คือจุดเวลาเดียว การแสดงเป็น UTC เวลาท้องถิ่น หรือโซน IANA ที่เลือกจะเปลี่ยนหน้าปัด สำหรับ 1720000000000 ค่า UTC คือ 2024-07-03 09:46:40 America/New_York ในวันนั้นคือ 2024-07-03 05:46:40 (EDT) Asia/Seoul คือ 2024-07-03 18:46:40 (UTC+9) ค่านิวยอร์กและโซลได้จาก Intl ไม่ใช่สโลแกนออฟเซ็ตตายตัว
Unix timestamp มีเขตเวลาไหม
ไม่มี ไม่ได้เก็บ America/New_York หรือ Asia/Seoul timestamp ชี้จุดเวลา เขตเวลาถูกใส่เมื่อจัดรูปแบบจุดนั้นเป็นวันที่และเวลาที่คนอ่านได้ epoch นิยามเทียบ UTC ตัวเลขเองไม่ใช่ “ช่องเขตเวลา UTC”
Unix timestamp กับ ISO 8601
1720000000 กับ 2024-07-03T09:46:40Z แทนจุดเวลาเดียวกันได้ Unix เป็นค่าตัวเลขนับเวลาที่ผ่านไป ISO 8601 เป็นสตริงวันที่-เวลาที่อ่านง่าย อาจลงท้ายด้วย Z (UTC) หรือออฟเซ็ตตัวเลข Z หมายถึง UTC บางทีเรียก Zulu คนละรูปแบบกัน
เอา Unix timestamp ปัจจุบันอย่างไร
ใน JavaScript ค่า Date.now() เป็นมิลลิวินาที Math.floor(Date.now() / 1000) เป็นวินาที อย่าเขียน “ตอนนี้” ตายตัวในบทความ เพราะมันขยับตลอด
Date.now();
Math.floor(Date.now() / 1000);
แปลงวันที่ย้อนเป็น Unix timestamp ได้ไหม
ได้ จากสตริง ISO ของ UTC ที่ระบุชัด getTime() คืนมิลลิวินาที หาร 1000 แล้วปัดลงได้วินาที
const date = new Date("2024-07-03T09:46:40Z");
date.getTime();
// 1720000000000
Math.floor(date.getTime() / 1000);
// 1720000000
ระวังรูปแบบวันที่ที่กำกวม
03/07/2024 อาจหมายถึง 7 มีนาคม หรือ 3 กรกฎาคม ตามโลแคล ควรใช้วันที่และเวลาแบบ ISO พร้อมเขตเวลาหรือออฟเซ็ต ตัวแปลงวันที่และเวลา ปฏิเสธวันที่ตัวเลขกำกวมอย่าง 01/02/2026 และขอตัวเลือกวันที่หรือค่าแบบ ISO
แล้วเวลาออมแสงล่ะ
Unix timestamp ไม่เก็บธง DST การแสดงท้องถิ่นใช้กฎของโซน America/New_York ใช้ออฟเซ็ตต่างกันฤดูหนาวกับฤดูร้อน ดังนั้น “นิวยอร์กคือ UTC-5” ไม่จริงทั้งปี
Unix timestamp นับอธิกวินาทีด้วยไหม
POSIX/Unix time โดยทั่วไปไม่ได้นับอธิกวินาทีเป็น SI วินาทีส่วนเกินบนสเกลต่อเนื่อง แพลตฟอร์มอาจต่างกัน การแปลงในชีวิตประจำวันละเลยรายละเอียดนี้ได้
ความผิดพลาดที่พบบ่อยตอนแปลง Unix timestamp
การสับสนเหล่านี้ให้วันที่ผิดหรือหน้าปัดผิด:
ถือวินาทีเป็นมิลลิวินาที
ค่าวินาทียุคใหม่จะไปตกใกล้ 1970 ใน JavaScript Date
ถือมิลลิวินาทีเป็นวินาที
วันที่จะกระโดดไกลไปอนาคต
ยึด 10 หรือ 13 หลักเป็นกฎตายตัว
จำนวนหลักเป็นเบาะแส ไม่ใช่การรับประกัน
สับสน UTC กับเวลาท้องถิ่น
จุดเวลาเดียวกัน นาฬิกาที่แสดงอาจต่าง
คิดว่าเขตเวลาอยู่ในตัวเลข
ชื่อ IANA ถูกใช้ตอนแสดง ไม่ได้เก็บใน timestamp
วันที่กำกวม สโลแกน DST หรือ ×1000 ส่วนเกิน
ใส่แบบ ISO อย่าคูณ timestamp มิลลิวินาทีซ้ำ
ตัวอย่าง UTC ที่ตรวจแล้ว
เวลาตามนาฬิกา UTC เหล่านี้คำนวณมา ไม่ได้เดา:
| อินพุต | หน่วย | UTC |
|---|---|---|
| 0 | วินาที | 1970-01-01 00:00:00 |
| 1720000000 | วินาที | 2024-07-03 09:46:40 |
| 1720000000000 | มิลลิวินาที | 2024-07-03 09:46:40 |
| 1720000000 | มิลลิวินาที | 1970-01-20 21:46:40 |
แนวตัดสินใจแปลงอย่างง่าย
ถ้าต้นทางระบุหน่วย ให้ใช้หน่วยนั้น ถ้าไม่ จำนวนหลักเป็นเบาะแส จากนั้นดูว่าวันที่สมเหตุสมผลหรือไม่ แปลงวินาทีเป็นมิลลิวินาทีเมื่อ API ต้องการ ms เลือก UTC ท้องถิ่น หรือโซน IANA สำหรับการแสดง ISO 8601 เหมาะกับการเก็บและแลกเปลี่ยน
- มี Unix timestamp
- ระบุหน่วยไหม ถ้ามีใช้เลย ไม่มีให้ดูขนาด
- วินาที? ×1000 ถ้า API ต้องการมิลลิวินาที
- มิลลิวินาที? ใช้ตรง ๆ ใน API แบบ ms
- แสดงเป็น UTC ท้องถิ่น หรือโซน IANA
- ต้องการสตริง? ISO 8601 อาจเหมาะ
timestamp ชี้จุดบนแกนเวลา UTC เวลาท้องถิ่น หรือเขตเวลา แค่ตัดสินว่าจะโชว์จุดนั้นให้คนดูอย่างไร
แปลง Unix timestamp ในเบราว์เซอร์
NEXNARA ตัวแปลงวันที่และเวลา แปลงวินาทีและมิลลิวินาที Unix แสดง UTC เวลาท้องถิ่น และ ISO 8601 รวมถึงแปลงระหว่างโซน IANA
โหมด Unix รองรับวินาที มิลลิวินาที หน่วยอัตโนมัติ เวลาปัจจุบัน และวันที่เป็น timestamp โหมดเขตเวลาค้นหาชื่อ IANA ใช้โซนของเบราว์เซอร์ และใส่ออฟเซ็ต Intl ที่รู้ DST โหมดรูปแบบมีเอาต์พุตอ่านตามโลแคล แสดง 12/24 ชั่วโมง และกันวันที่กำกวม ผลต่างวันที่เป็นโหมดแยก
การแปลงใช้ Date และ Intl API ของเบราว์เซอร์ ค่านอกที่ Date แทนค่าได้จะถูกปฏิเสธ หน่วยอัตโนมัติไม่เดาค่า 11–12 หลัก ให้เลือกวินาทีหรือมิลลิวินาที
การแปลงวันที่และ timestamp เกิดในเบราว์เซอร์ อินพุตไม่ถูกส่งไปเซิร์ฟเวอร์ NEXNARA เพื่อแปลง โฆษณาและฟีเจอร์อื่นของไซต์ยังใช้เครือข่าย
วาง timestamp ใน ตัวแปลงวันที่และเวลา แล้วเทียบ UTC เวลาท้องถิ่น และ ISO 8601 ก่อนเลือกหน่วย
FAQ
แปลง Unix timestamp เป็นวันที่ยังไง
รู้หน่วย สำหรับวินาทีใน JavaScript ใช้ new Date(n * 1000) สำหรับมิลลิวินาทีใช้ new Date(n) แล้วจัดรูปแบบเป็น UTC ท้องถิ่น หรือโซน
Unix timestamp เป็นวินาทีหรือมิลลิวินาที
ได้ทั้งสองอย่าง ประมาณ 10 หลักมักเป็นวินาที ประมาณ 13 หลักมักเป็นมิลลิวินาที แต่เป็น heuristic ไม่ใช่กฎ
ทำไม timestamp ของฉันขึ้น 1970
มักเป็นค่าวินาทีที่ถูกอ่านเป็นมิลลิวินาที ดู Unix Timestamp วินาทีกับมิลลิวินาที: ทำไมวันที่ขึ้น 1970
Unix timestamp เป็น UTC เสมอหรือ
epoch นิยามเทียบ UTC และตัวเลขชี้จุดเวลา เขตเวลาตอนแสดงเป็นเรื่องแยก ไม่ใช่ “ช่องเขตเวลา UTC” ที่เก็บไว้
Unix timestamp มีเขตเวลาไหม
ไม่มี ไม่ได้พาตัวระบุ IANA เขตเวลาถูกใส่เมื่อจัดรูปแบบจุดเวลานั้น
แปลงวันที่เป็น Unix timestamp อย่างไร
จากสตริง ISO ของ UTC ค่า date.getTime() เป็นมิลลิวินาที Math.floor(date.getTime() / 1000) เป็นวินาที