פיתוח · 2 דקות קריאה ·
חותמות זמן Unix: שניות או מילישניות?
הבאג של 13 הספרות שעולה לפרודקשן כל שבוע, וכלל פשוט להבחין בין שתי היחידות.

JavaScript מדברת במילישניות. רוב צד השרת מדבר בשניות. ערבבו ביניהן, והתאריכים ינחתו בינואר 1970 — או עשרות אלפי שנים בעתיד.
ספרו את הספרות
חותמת זמן עכשווית בשניות היא בת 10 ספרות (1790000000 הוא 21 בספטמבר 2026). אותו רגע במילישניות הוא בן 13 ספרות, במיקרו-שניות 16 ובננו-שניות 19.
הכלל
אם הערך המוחלט גדול מ-10¹², אלה מילישניות; אחרת, התייחסו אליו כשניות. הכלל נכון לכל חותמת במילישניות אחרי ספטמבר 2001 ולכל חותמת בשניות לפני השנה 33658.
const ms = Math.abs(n) > 1e12 ? n : n * 1000;
בחרו את היחידה במפורש
ממיר חותמות הזמן של 4Dev לא מנחש: "Unix Timestamp" פירושו שניות ו-"Unix Timestamp (ms)" פירושו מילישניות, לצד גרסאות של מיקרו-שניות וננו-שניות — 33 פורמטים בסך הכול, כולל ISO 8601, RFC 2822, SQL DATETIME ותאריכים סידוריים של Excel.