วิธีแปลง Unix Timestamp เป็นวันที่อ่านได้
ตอบด่วน
Unix timestamp = วินาที (หรือ millisecond) ตั้งแต่ 1970-01-01 00:00:00 UTC แปลงเป็นวันที่ด้วย new Date(timestamp * 1000) ใน JavaScript (วินาที) หรือ new Date(timestamp) (millisecond) ใช้ Timestamp Converter ของเรา
การแนะนำ
Unix timestamp (epoch time หรือ POSIX time) คือวินาทีตั้งแต่ 1970-01-01 00:00:00 UTC (Unix epoch) ไม่นับ leap second เป็น lingua franca ของเวลาใน computing เพราะเป็น integer เดียว timezone-independent และ sort ง่าย ระบบส่วนใหญ่ใช้วินาที; JavaScript และฐานข้อมูลใช้ millisecond
ทีละขั้นตอน
-
ทำความเข้าใจกับวินาทีเทียบกับมิลลิวินาที
ระบบแบ็กเอนด์ส่วนใหญ่และ APIs ใช้วินาที (ประทับเวลา 10 หลักจนถึง 2286) วันที่ของ JavaScript และมิลลิวินาทีการใช้งานทันทีของ Java (13 หลัก) ตรวจสอบเสมอว่าหน่วยใดที่ API คาดหวัง —การผสมหน่วยเหล่านั้นจะเปลี่ยนวันที่เป็นปัจจัย 1,000 (ลดลง ~ 31 ปี)
-
แปลงการประทับเวลาเป็นวันที่ที่อ่านได้
วางการประทับเวลาลงใน Timestamp Converter ตรวจจับวินาทีเทียบกับมิลลิวินาทีตามความยาว (10 ถึง 13 หลัก) และแสดงวันที่ในรูปแบบ UTC และเขตเวลาท้องถิ่นของคุณ ในรหัส: new Date(1700000000 * 1,000).toISOString() ส่งคืน '2023-11-14T22:13:20.000Z'
-
แปลงวันที่เป็นการประทับเวลา
ป้อนวันที่และเวลาลงในตัวแปลง มันจะส่งคืนการประทับเวลา Unix ในโค้ด: Math.floor(new Date('2026-08-28T12:00:00Z').getTime() / 1000) ส่งคืนยุควินาที ระบุเขตเวลา (Z หรือออฟเซ็ต) เสมอเพื่อหลีกเลี่ยงความคลุมเครือในเวลาท้องถิ่น
-
จัดการเขตเวลาอย่างถูกต้อง
การประทับเวลา Unix จะเป็น UTC เสมอ เนื่องจากไม่มีเขตเวลา แปลงเป็นจอแสดงผลในตัวเครื่องเฉพาะในเลเยอร์การนำเสนอเท่านั้น อย่าเก็บเวลาท้องถิ่นไว้เป็นการประทับเวลา เก็บ UTC และแปลงบนจอแสดงผล ใช้ชื่อเขตเวลา IANA (อเมริกา/นิวยอร์ก) กับ Intl.DateTimeFormat เพื่อการจัดการ DST ที่ถูกต้อง
-
คำนวณความแตกต่างระหว่างวันที่
ลบการประทับเวลาสองครั้งเพื่อให้ได้ค่าความแตกต่างเป็นวินาที (หรือมิลลิวินาที) หารด้วย 60 สำหรับนาที 3600 สำหรับชั่วโมง 86400 สำหรับวัน ใช้เครื่องมือความแตกต่างของวันที่สำหรับช่วงที่เหมาะกับมนุษย์ หรือใช้เครื่องคำนวณอายุสำหรับอายุตามวันเกิด
ตัวอย่าง
ยุคยูนิกซ์
ป้อนข้อมูล: 0 (seconds)
เอาท์พุต: 1970-01-01 00:00:00 UTC
หนึ่งพันล้านวินาทีหลังจากยุค
ป้อนข้อมูล: 1000000000 (seconds)
เอาท์พุต: 2001-09-09 01:46:40 UTC
เริ่มต้นปี 2026 ตามเวลา UTC
ป้อนข้อมูล: 2026-01-01T00:00:00Z
เอาท์พุต: 1767225600 (วินาที) / 1767225600000 (มิลลิวินาที)
ความแตกต่างระหว่างวันที่สองวัน
ป้อนข้อมูล: 1767225600 - 1700000000
เอาท์พุต: 67225600 seconds = 778.08 days ≥2 years 31 days
ปัญหาทั่วไป
- ความสับสนระหว่างวินาทีกับมิลลิวินาที: การประทับเวลา 10 หลักอ่านเป็นมิลลิวินาทีให้วันที่ในปี 1970 การประทับเวลา 13 หลักอ่านเป็นวินาทีที่ล้น int 32 บิต ตรวจจับหน่วยด้วยจำนวนหลักหรือบันทึกไว้อย่างชัดเจนใน API
- การจัดเก็บเวลาท้องถิ่นเป็นการประทับเวลา: การประทับเวลาคือ UTC หากคุณคำนวณ Date.now() ในเบราว์เซอร์ที่ตั้งค่าเป็น UTC-5 และถือว่าผลลัพธ์เป็นแบบโลคัล การเปลี่ยน DST จะเปลี่ยนข้อมูลของคุณหนึ่งชั่วโมงปีละสองครั้ง
- โอเวอร์โฟลว์แบบ 32 บิตในวันที่ 19-01-2038 03:14:07 UTC (Y2038): ระบบที่ใช้การประทับเวลาวินาทีแบบ 32 บิตที่ลงนามแล้วไม่สามารถแสดงวันที่หลังจากจุดนี้ได้ ใช้การประทับเวลา 64 บิตหรือมิลลิวินาทีในระบบใหม่
- วินาทีกระโดดจะถูกละเว้น: การประทับเวลา Unix ข้ามวินาทีกระโดด ดังนั้นความแตกต่างระหว่างการประทับเวลาสองครั้งจึงไม่เท่ากับจำนวน SI วินาทีที่ผ่านไป แอปพลิเคชันส่วนใหญ่สามารถเพิกเฉยต่อสิ่งนี้ได้ ดาราศาสตร์และการเงินที่มีความแม่นยำสูงไม่สามารถทำได้
เคล็ดลับ
- จัดเก็บและส่งการประทับเวลาในรูปแบบ UTC เสมอ แปลงเป็นเวลาท้องถิ่นที่เลเยอร์การแสดงผลเท่านั้นโดยใช้ Intl.DateTimeFormat พร้อมเขตเวลา IANA
- ใช้สตริง ISO 8601 (เช่น 2026-08-28T12:00:00Z) สำหรับ APIs ที่มนุษย์อ่านได้ และการประทับเวลาสำหรับการจัดเก็บ สตริง ISO มีเขตเวลาอย่างชัดเจนและไม่คลุมเครือ
- เมื่อเปรียบเทียบการประทับเวลา ให้ใช้หน่วยเดียวกัน (วินาทีหรือมิลลิวินาที) ทั้งสองด้าน — หน่วยที่ไม่ตรงกันเป็นหนึ่งในข้อบกพร่องของวันที่ที่พบบ่อยที่สุด
- ใช้ Timestamp Converter ของเราเพื่อตรวจสอบความถูกต้องของการตอบสนอง API ระหว่างการแก้ไขข้อบกพร่อง โดยจะแสดงทั้งเวลา UTC และเวลาท้องถิ่น เพื่อให้คุณมองเห็นจุดบกพร่องของเขตเวลาได้ทันที