שניות מול מילישניות
1777118400
1777118400000
שני הערכים מתארים את אותו רגע אם הראשון מתפרש כשניות והשני כמילישניות. בלבול ביניהם הוא הבאג הנפוץ ביותר עם timestamps.
להמיר בין חותמות זמן של Unix, ISO 8601, UTC וזמן מקומי.
עודכן לאחרונה
ב-Coddy לומדים דרך כתיבת קוד אמיתי בדפדפן: שיעורים אינטראקטיביים, משוב מיידי ועזרה מ-AI כשנתקעים.
Unix timestamp converter הופך *epoch time*, כלומר מספר יחיד שמייצג רגע מסוים בזמן, לתאריכים קריאים, וממיר תאריכים בחזרה ל-timestamps. מפתחים נתקלים ב-timestamps בכל מקום: עמודות במסד נתונים, שורות לוג, תגובות API, אירועי אנליטיקס, ה-claim exp של JWT, טריגרים של מתזמנים וכותרות תפוגה של cache.
הרעיון הבסיסי פשוט: מחשבים שומרים זמן כמספר (שניות או מילישניות מאז 1970-01-01 00:00:00 UTC), אבל בני אדם צריכים לוחות שנה, אזורי זמן ופורמטים קריאים. ההמרה בין השניים היא אחת ממשימות הדיבוג הנפוצות ביותר בכל אפליקציית ווב או מובייל.
החלק המבלבל ביותר הוא *היחידות*. POSIX ורוב שפות ה-backend משתמשות בשניות. JavaScript, Java והרבה message brokers משתמשים במילישניות. חלק ממערכות המדדים משתמשות במיקרו שניות או בננו שניות. מספר בן 10 ספרות הוא כמעט תמיד שניות, ומספר בן 13 ספרות הוא כמעט תמיד מילישניות.
1970-01-01 00:00:00 UTC).2026-04-25T12:00:00Z) הוא פורמט טקסט נייד. ה-Z בסוף (או +00:00) פירושו UTC, והיסט כמו +02:00 פירושו שעה מקומית שמקדימה את UTC בשעתיים.2026-04-25T12:00:00Z ו-2026-04-25T14:00:00+02:00).הדביקו מספר (שניות או מילישניות) או מחרוזת תאריך. הממיר מזהה את הפורמט אוטומטית לפי האורך והצורה.
עברו בין שניות למילישניות אם הזיהוי האוטומטי טועה: מספר בן 10 ספרות הוא שניות, ומספר בן 13 ספרות הוא מילישניות.
הפלט מציג ISO 8601 ב-UTC, את השעה המקומית שלכם וביטוי יחסי קריא (לפני 3 שעות, בעוד יומיים).
העתיקו ישירות את ה-timestamp, את מחרוזת ה-ISO או את השעה המקומית. שימושי כשממלאים exp של JWT, שורה במסד נתונים או שאילתת לוגים.
הפורמטים שתראו הכי הרבה כשעובדים עם תאריכים ושעות בקוד. ה-IETF מגדיר גם פרופיל של ISO 8601 בשם RFC 3339 לשימוש בפרוטוקולים.
| פורמט | דוגמה | איפה רואים אותו |
|---|---|---|
| Unix בשניות | 1777118400 | לוגים של backend, exp של JWT, time() של POSIX, Redis |
| Unix במילישניות | 1777118400000 | Date.now() של JavaScript, System.currentTimeMillis() של Java |
| ISO 8601 ב-UTC | 2026-04-25T12:00:00Z | REST APIs, JSON, GraphQL, קובצי לוג |
| ISO 8601 עם היסט | 2026-04-25T14:00:00+02:00 | תזמונים שמוצגים למשתמש, הזמנות ביומן |
| RFC 2822 | Sat, 25 Apr 2026 12:00:00 GMT | כותרות email, Date ו-Last-Modified ב-HTTP |
| תאריך בלבד | 2026-04-25 | ימי הולדת, חגים: בלי משמעות של אזור זמן |
1777118400
1777118400000
שני הערכים מתארים את אותו רגע אם הראשון מתפרש כשניות והשני כמילישניות. בלבול ביניהם הוא הבאג הנפוץ ביותר עם timestamps.
{ "id": 42, "createdAt": 1777118400, "expiresAt": 1777204800}המירו כל ערך לפני שאתם מניחים אם הוא בעבר או בעתיד. רוב ה-JSON APIs משתמשים ב-Unix בשניות, אבל תמיד בדקו בתיעוד: backends שמבוססים בכבדות על JavaScript שולחים לעיתים קרובות מילישניות.
2026-04-25T12:00:00Z
2026-04-25T14:00:00+02:00
שתי המחרוזות האלה מייצגות את *אותו רגע בדיוק*. תמיד שמרו רגעים ב-UTC, והמירו לשעה מקומית רק בזמן התצוגה.
1700000000 כשניות הוא נובמבר 2023, אבל כמילישניות הוא ינואר 1970.'2026-04-25') במקום השוואה של timestamps. שתי מחרוזות ISO תקינות יכולות לתאר את אותו רגע בפורמטים שונים.1970-01-01 00:00:00 UTC. זה מספר יחיד שמייצג רגע מסוים בזמן, בלי תלות באזור זמן כלשהו.Date.now() של JavaScript מחזיר מילישניות, ורוב ה-backends מחזירים שניות.Date של JavaScript שומר timestamps כמילישניות מאז ה-epoch של Unix: זה הערך ש-Date.now() ו-new Date().getTime() מחזירים. זה נותן דיוק גבוה יותר משניות, אבל זה גם מקור נפוץ לבאגים של פי 1000 בעבודה מול שפות אחרות.new Date(...) ב-JavaScript, או השתמשו ב-datetime.fromtimestamp(...) ב-Python. אפשר גם להדביק אותו ב-Unix timestamp converter ולקבל תוצאה בלחיצה אחת.2038-01-19, מה שמכונה בעיית 2038. שפות ומסדי נתונים מודרניים שומרים timestamps כמספרים שלמים של 64 ביט, וזה מרחיב את הטווח הבטוח במאות מיליארדי שנים.