ממיר זמן Epoch
המר חותמות זמן של Unix לתאריכי UTC או הפוך תאריך לשניות epoch.
כיצד להשתמש בממיר זמן epoch זה
- בחירת מצב ההמרה
בחר "Epoch לתאריך" או "תאריך ל-Epoch" בשדה מצב ההמרה.
- עבור המרת Epoch לתאריך
הזן את חותמת הזמן של Unix בשניות בשדה "חותמת זמן Epoch (שניות)".
- עבור המרת תאריך ל-Epoch
בחר את התאריך בלוח השנה, ולאחר מכן הגדר שעה (UTC), דקה (UTC) ושנייה (UTC) לפי הצורך.
- קרא את התוצאה
המחשבון מציג את ערך ה-UTC, מילי-שניות Unix ויום בשבוע.
כיצד פועל ממיר זמן ה-epoch
ממיר זמן ה-epoch הזה מתרגם בין חותמות זמן של Unix לבין תאריכי UTC קריאים לבני אדם. זמן Unix — הנקרא גם זמן POSIX או זמן epoch — סופר את מספר השניות שחלפו מאז ה-Unix epoch, המוגדר כחצות UTC ב-1 בינואר 1970 (1970-01-01T00:00:00Z). ייצוג זה כמספר שלם יחיד הוא הסטנדרט דה-פקטו לאחסון והעברת חותמות זמן במסדי נתונים, APIs, קובצי לוג, אסימוני JWT וכמעט בכל שפת תכנות מודרנית. הממיר תומך בשני הכיוונים: הזנת חותמת זמן מספרית מחזירה את תאריך ה-UTC המתאים, היום בשבוע והערך המקביל במילי-שניות, בעוד שהזנת תאריך ושעה בלוח השנה מחזירה את ערך ה-epoch בשניות ובמילי-שניות.
זמן Unix = שניות שחלפו מאז 1970-01-01T00:00:00Z כדי להמיר את חותמת הזמן של Unix 1,700,000,000 לתאריך: החל מ-1970-01-01 00:00:00 UTC, הוסיפו 1,700,000,000 שניות. זה שווה ל-19,675 ימים, 17 שעות, 46 דקות ו-40 שניות. תאריך ה-UTC המתקבל הוא 2023-11-14 בשעה 22:13:20 UTC, שחל ביום שלישי. המקבילה במילי-שניות היא 1,700,000,000,000. לעומת זאת, הזנת 14 בנובמבר 2023 בשעה 22:13:20 UTC מחזירה ערך epoch של 1,700,000,000 בדיוק.
חותמת זמן 0 מומרת ל-1970-01-01 00:00:00 UTC (יום חמישי). המקבילה במילי-שניות היא 0.
חותמת זמן 1,704,000,000 מומרת ל-2023-12-31 12:00:00 UTC (יום ראשון). הזנת תאריך ושעה אלו במצב 'מתאריך ל-epoch' מחזירה 1,704,000,000.
- ✓ כל החישובים מבוצעים ב-UTC. המרה לזמן מקומי דורשת החלת היסט אזור הזמן המתאים לאחר ההמרה.
- ✓ שניות מעוברות אינן נספרות. בדומה ל-POSIX, ממיר זה מתייחס לכל יום כאל 86,400 שניות בדיוק, מה שתואם את ההתנהגות של רוב שפות התכנות ומערכות ההפעלה.
- ✓ חותמות זמן שליליות מייצגות תאריכים לפני נקודת האפס (1 בינואר 1970). לדוגמה, -86400 מתאים ל-31 בדצמבר 1969.
- ✓ יש לחלק חותמות זמן במילישניות ב-1,000 לפני ההזנה; הממיר מקבל שניות כקלט ומציג את המקבילה במילישניות בתוצאות.
- הפונקציות Date.now() ב-JavaScript ו-System.currentTimeMillis() ב-Java מחזירות מילי-שניות, לא שניות — חלקו ב-1,000 לפני הזנת הערך כאן, או השתמשו בפלט המילי-שניות לצורך השוואה.
- בעיית שנת 2038 משפיעה על חותמות זמן של מספרים שלמים עם סימן ב-32 סיביות, שיעלו על גדותיהם ב-19 בינואר 2038 בשעה 03:14:07 UTC. רוב המערכות המודרניות עברו לחותמות זמן של 64 סיביות.
- בעת ניפוי שגיאות (debugging) של תגובות API או קובצי לוג, שימו לב לחותמות זמן שנראות שגויות ב-3,600 או 7,200 שניות בדיוק — זה בדרך כלל מעיד על כך שהוחל (או הושמט) היסט של אזור זמן איפשהו בתהליך.
- זמן Epoch תמיד עולה בצורה מונוטונית (בהתעלם מהתאמות של שניות מעוברות), מה שהופך אותו לאידיאלי למיון אירועים, חישוב משכי זמן ויצירת מזהים ייחודיים מבוססי זמן.
- IEEE Std 1003.1 (POSIX) — הגדרה של שניות מאז ה-Epoch
- מקור ה-Unix epoch — תיעוד של The Unix Heritage Society ו-Bell Labs
- RFC 3339 — תאריך ושעה באינטרנט: חותמות זמן
מהן חותמות זמן של Unix?
חותמת זמן של Unix היא מספר השניות שחלפו מאז חצות UTC ב-1 בינואר 1970 — ה-Unix epoch. מספר שלם יחיד זה הוא הסטנדרט דה-פקטו לייצוג זמן במסדי נתונים, ממשקי API, קובצי לוג ורוב שפות התכנות. מכיוון שהוא אינו תלוי באזור זמן ועולה באופן מונוטוני, הוא מפשט מיון, חישובי משך זמן והשוואות מבוססות זמן. הפונקציה Date.now() של JavaScript וממשקי API רבים מחזירים מילי-שניות (1,000 × שניות), לכן יש לחלק ב-1,000 לפני הזנת ערך מילי-שניות כאן. חותמות זמן שליליות מייצגות תאריכים לפני 1970; לדוגמה, −86400 הוא בדיוק יום אחד לפני ה-epoch.
מקרי בוחן למפתחים עבור זמן epoch
מפתחים משתמשים בחותמות זמן של Unix בעת אחסון זמני אירועים במסדי נתונים, סריאליזציה של תאריכים בממשקי JSON API, יצירת מפתחות מטמון מבוססי זמן וניפוי שגיאות ברשומות לוג. עמודות במסדי נתונים מאחסנות לעיתים קרובות חותמות זמן כמספרים שלמים לצורך אינדוקס יעיל ושאילתות טווח. תגובות API מחזירות לעיתים קרובות שניות או מילי-שניות של epoch כדי למנוע אי-בהירות של אזורי זמן. בעת ניפוי שגיאות, המרת חותמת זמן גולמית מלוג או מטענת JWT לתאריך קריא לבני אדם חושפת במהירות אם הערך נכון או מוסט בגלל גורם אזור זמן. זמן epoch משמש גם להגבלת קצב (rate limiting), פקיעת תוקף של סשנים ויצירת מזהים ייחודיים הניתנים למיון במערכות מבוזרות.
שאלות נפוצות על ממיר זמן Epoch
מהו ה-Unix epoch?
ה-Unix epoch הוא נקודת הייחוס שממנה נמדד זמן Unix: חצות UTC ב-1 בינואר 1970 (1970-01-01T00:00:00Z). חותמת זמן של 0 מתאימה לרגע המדויק הזה.
מדוע לחותמת הזמן שלי ב-JavaScript יש יותר ספרות?
הפונקציה Date.now() של JavaScript מחזירה מילי-שניות מאז ה-epoch, ולא שניות. חלק ב-1,000 כדי להמיר לפורמט מבוסס שניות המשמש בכלי זה, או השווה ישירות עם פלט המילי-שניות.
האם ניתן להזין חותמת זמן שלילית?
כן. ערכים שליליים מייצגים תאריכים שלפני ה-epoch. לדוגמה, −86400 תואם ל-1969-12-31T00:00:00Z, בדיוק יום אחד לפני ה-epoch.
האם הכלי מטפל בשניות מעוברות?
לא, וזה תואם לתקן POSIX. זמן POSIX מניח שכל יום הוא בדיוק 86,400 שניות. 27 השניות המעוברות שהוכנסו מאז 1972 אינן מיוצגות בנפרד, מה שאומר ש-UTC וזמן Unix יכולים להיות שונים בעד שנייה אחת בנקודות המעבר של שניות מעוברות.
מהי בעיית שנת 2038?
מערכות המאחסנות זמן Unix כמספר שלם חתום של 32 סיביות יחוו גלישה ב-19 בינואר 2038 בשעה 03:14:07 UTC, מה שיגרום למעבר למספר שלילי גדול ולהצגת תאריכים משנת 1901. רוב הפלטפורמות המודרניות משתמשות כיום בחותמות זמן של 64 סיביות, שלא יגלשו במשך למעלה מ-290 מיליארד שנים.