ממיר חותמת זמן Unix
חותמת זמן לתאריך
שניות או מילישניות מזוהות אוטומטית.
תאריך לחותמת זמן
בחר תאריך ושעה להמרה לחותמת זמן Unix.
שניות מאז Epoch של Unix (00:00:00 UTC ב-1 בינואר 1970)
שניות או מילישניות מזוהות אוטומטית.
בחר תאריך ושעה להמרה לחותמת זמן Unix.
הרגע הנוכחי באותו זמן המוצג במספר פורמטים נפוצים, מעודכן בשידור חי:
| פורמט | ערך נוכחי |
|---|---|
| Unix timestamp (שניות) | — |
| חותמת זמן Unix (מילישניות) | — |
| ISO 8601 (UTC) | — |
| RFC 2822 (UTC) | — |
זמן Unix (המוכר גם כזמן Epoch, זמן POSIX, או חותמת זמן Unix) הוא מערכת לתיאור נקודת זמן. זהו מספר השניות שחלפו מאז Epoch Unix, המוגדר כ-00:00:00 UTC ביום חמישי, 1 בינואר 1970. הוא משמש באופן נרחב במערכות הפעלה דמויות Unix ובמערכות מחשוב רבות אחרות.
היתרון המרכזי של זמן Unix הוא הפשטות שלו. הוא מייצג זמן כמספר שלם אחד, שמובן בכל העולם ומתמיד גדל. זה מקל מאוד על אחסון, השוואה וביצוע חישובים עם תאריכים ושעות מבלי לדאוג לאזורי זמן, לשעון קיץ או למערכות לוח שנה שונות. לדוגמה, כדי למצוא את ההבדל בין שני אירועים, פשוט מחסרים את חותמות הזמן שלהם.
בעוד שמספר זה הוא מושלם למחשבים, הוא לא מאוד ידידותי לבני אדם. כדי לגשר על הפער הזה, מפתחים וחובבי טכנולוגיה משתמשים בכלי שנקרא המרת Epoch. ניתן להשתמש בו כדי להמיר מיידית כל חותמת זמן לתאריך קריא לאדם, או להפך על ידי מציאת חותמת הזמן לתאריך מסוים.
בעיה ידועה הקשורה לזמן Unix היא "בעיית שנת 2038". היא דומה בעניין לבעיית Y2K. מערכות מחשב מוקדמות רבות תוכננו לאחסן את חותמת הזמן של Unix כמספר שלם ב-32 סיביות עם סימן. מספר שלם ב-32 סיביות עם סימן יכול לייצג ערכים מ- -2,147,483,648 עד 2,147,483,647.
הערך המקסימלי, 2,147,483,647, יגיע ב-03:14:07 UTC ב-19 בינואר 2038. בשנייה הבאה, המספר יעלה על הגבול ויתקפל חזרה לערך השלילי המקסימלי שלו, שיתפרש על ידי מערכות כתאריך בשנת 1901. זה עלול לגרום לכשלונות נרחבים בתוכנות ישנות שתלויות בייצוגי זמן ב-32 סיביות.
הפתרון הוא להשתמש ב-מספר שלם ב-64 סיביות לאחסון חותמת הזמן. מספר שלם ב-64 סיביות הוא כה גדול עד שלא יעלה על הגבול במשך כ-292 מיליארד שנים, מה שמספק פתרון לבעיה לעתיד הנראה לעין. רוב מערכות ההפעלה והתוכנות המודרניות כבר עברו לייצוגי זמן ב-64 סיביות.
פרט טכני חשוב הוא שזמן Unix אינו מתחשב בשניות קפיצה. בעוד ש-UTC (זמן אוניברסלי מתואם) מוסיף לעיתים שנייה קפיצה כדי לשמור על סינכרון עם סיבוב כדור הארץ, חותמת הזמן של Unix פשוט מתעלמת מהן וממשיכה לספור בקו ישר.
זה אומר שזמן Unix אינו ייצוג מדויק של UTC. במקום זאת, הוא מתואר כמדידה ליניארית של שניות. כאשר מתרחשת שנייה קפיצה, לעיתים זמן Unix חוזר על עצמו בשנייה כדי לשמור על סינכרון. הבדל זה קריטי ליישומים מדעיים ודיוק גבוה, אך לרוב השימושים הכלליים, ההבדל זניח.
created_at, updated_at).
עידן היוניקס הוא הרגע שבו הזמן מתחיל עבור מערכות יוניקס: 00:00:00 UTC ב-1 בינואר 1970. חותמת הזמן של יוניקס היא פשוט מספר השניות שחלפו מאז אותו רגע.
התאריך נבחר על ידי מפתחי יוניקס המוקדמים כנקודת התחלה עגולה ונוחה, קרובה למועד יצירת המערכת בתחילת שנות ה-70. מאז הוא משמש כנקודת הייחוס הסטנדרטית.
זמן יוניקס נספר מאפוקה המוגדרת ב-UTC ואינו תלוי באזור זמן, כך שאותה חותמת זמן מייצגת את אותו הרגע בכל מקום. מכיוון שהוא מתעלם משניות מעוברות, הוא מוגדר בצורה הטובה ביותר כספירה ליניארית של שניות ולא כייצוג מושלם של UTC.
חותמת זמן סטנדרטית של יוניקס סופרת שניות שלמות מאז העידן, אשר עבור תאריכים נוכחיים היא בת 10 ספרות. מערכות רבות, כולל JavaScript, סופרות מילישניות במקום, ומייצרות ערך גדול פי 1,000 עם 13 ספרות.
מערכות האוצרות חותמת זמן במספר שלם חתום של 32 סיביות יכולות לספור עד 03:14:07 UTC בתאריך 19 בינואר 2038, ולאחר מכן הערך גולש ומתפרש בטעות כתאריך בשנת 1901. התיקון הוא לאחסן את חותמת הזמן במספר שלם של 64 סיביות.