ממיר UNIX Timestamp: תאריך, זמן, UTC - חינם וקל

חותמת זמן UNIX נוכחית

שניות
אלפיות שנייה

חותמת זמן ← תאריך ושעה


תאריך ושעה ← חותמת זמן

ממיר חותמת זמן UNIX (ממיר זמן UNIX מקוון)

ממיר חותמת זמן UNIX זה מאפשר לכם להמיר במהירות זמן UNIX (epoch time / POSIX time) לתאריך ושעה ובחזרה. הוא תומך בחותמת זמן בשניות ובאלפיות שנייה, מציג זמן מקומי, UTC וגם ISO 8601, ואת התוצאות ניתן להעתיק בלחיצה אחת.


מהי חותמת זמן UNIX (epoch time / POSIX time)?

חותמת זמן UNIX היא מספר המייצג את הזמן כמספר השניות שחלפו מאז 1 בינואר 1970, 00:00:00 UTC (המכונה UNIX epoch). בפועל, זהו אחד הפורמטים הנפוצים ביותר לאחסון והעברת תאריך ושעה במערכות, מסדי נתונים, ממשקי API ורישום יומן (logging).

דוגמה: 1700000000 מתאים לתאריך 14 בנובמבר 2023, 22:13:20 UTC.

למה דווקא 1 בינואר 1970?

תחילת האפוקה (1970-01-01) נבחרה בעת תכנון UNIX כנקודת ייחוס מעשית: היא קרובה לתקופת יצירת המערכת ומאפשרת חישובי זמן פשוטים.


חותמת זמן UNIX בשניות מול אלפיות שנייה

חותמת זמן UNIX מופיעה לרוב בשתי צורות:

פורמט חותמת הזמןדוגמהשימוש אופייני
שניות (s)1700000000מסדי נתונים, בקאנד, API, קבצים
אלפיות שנייה (ms)1700000000000JavaScript (Date.now()), אנליטיקה, יומנים מפורטים

איך לדעת מה יש לכם?

  • לשניות יש בדרך כלל 10 ספרות עבור תאריכים “עכשוויים”.
  • לאלפיות שנייה יש בדרך כלל 13 ספרות והן גדולות פי 1000 בערך.
  • באופן כללי: אם הערך הוא > 10¹², כמעט בוודאות מדובר באלפיות שנייה.

איך להשתמש בממיר חותמת זמן UNIX

1) חותמת זמן ← תאריך ושעה

  1. הכניסו את חותמת הזמן של UNIX לשדה, או לחצו על עכשיו (זמן UNIX נוכחי).
  2. אם חותמת הזמן היא באלפיות שנייה, הפעילו את האפשרות אלפיות שנייה.
  3. לחצו על המר (או הקישו Enter).
  4. ההמרה לזמן מקומי, UTC וISO 8601 תוצג.
  5. לחיצה על התוצאה תעתיק אותה ללוח.

2) תאריך ושעה ← חותמת זמן

  1. בחרו תאריך ושעה בטופס.
  2. לחצו על המר.
  3. התוצאה תתקבל כחותמת זמן בשניות ובאלפיות שנייה.

היכן משתמשים בחותמת זמן UNIX לרוב?

זמן UNIX נמצא בשימוש כמעט בכל מקום שבו עובדים עם זמן ב-IT:

  • מסדי נתונים – אחסון זמנים והשוואתם ב-MySQL, PostgreSQL, SQLite וכדומה.
  • ממשקי API – REST/GraphQL לעיתים קרובות מחזירים זמן כחותמת זמן (סריאליזציה קלה).
  • יומנים וניטור – סדר מדויק של אירועים בזמן.
  • Git – קומיטים מכילים נתוני זמן.
  • מערכות קבצים – זמנים כמו mtime/ctime/atime (שינוי אחרון וכדומה).
  • JWT – טענות iat (זמן הנפקה) ו-exp (זמן תפוגה) הן בדרך כלל בשניות אפוקה.
  • מעטפת Linux/Unixdate +%s מחזיר את חותמת הזמן הנוכחית.
  • JavaScriptDate.now() מחזיר את הזמן באלפיות שנייה.

דוגמאות מעשיות להמרת זמן UNIX

JavaScript (חותמת זמן ↔ תאריך)

// חותמת זמן UNIX נוכחית בשניות
const tsSeconds = Math.floor(Date.now() / 1000);

// חותמת זמן נוכחית באלפיות שנייה
const tsMs = Date.now();

// חותמת זמן (שניות) -> תאריך
const dateFromSeconds = new Date(1700000000 * 1000);
console.log(dateFromSeconds.toISOString());

// תאריך -> חותמת זמן (שניות)
const ts = Math.floor(new Date("2024-01-01T00:00:00Z").getTime() / 1000);
console.log(ts);

Python (חותמת זמן ↔ datetime)

import time
from datetime import datetime, timezone

# חותמת זמן נוכחית בשניות
ts = int(time.time())

# חותמת זמן -> datetime (UTC)
dt_utc = datetime.fromtimestamp(1700000000, tz=timezone.utc)

# תאריך -> חותמת זמן
ts2 = int(datetime(2024, 1, 1, tzinfo=timezone.utc).timestamp())

SQL (MySQL)

-- חותמת זמן UNIX נוכחית (שניות)
SELECT UNIX_TIMESTAMP();

-- חותמת זמן -> תאריך
SELECT FROM_UNIXTIME(1700000000);

-- תאריך -> חותמת זמן
SELECT UNIX_TIMESTAMP('2024-01-01 00:00:00');

אזורי זמן: UTC, זמן מקומי ו-ISO 8601

חותמת זמן UNIX היא תמיד ב-UTC – היא אינה מכילה מידע על אזור זמן או שעון קיץ. המרה לזמן מקומי תלויה בהגדרות הדפדפן, השרת או הספרייה שבה נעשה שימוש.

מושגים שכדאי להכיר:

  • UTC – תקן גלובלי ללא שעון קיץ/חורף.
  • GMT – למטרות שימוש יומיומי, כמעט זהה ל-UTC.
  • היסט (Offset) – הזזה יחסית ל-UTC (לדוגמה, ישראל UTC+2 בחורף, UTC+3 בקיץ).

מגבלות חותמת זמן UNIX ובעיית שנת 2038

בעיית שנת 2038

במערכות 32 ביט מסוימות, חותמת הזמן נשמרת כ-int32 עם מקסימום של 2,147,483,647, אשר שווה ל**-19 בינואר 2038, 03:14:07 UTC**. לאחר חציית ערך זה, עלולה להתרחש גלישה וזמן שגוי. מערכות 64 ביט מודרניות בדרך כלל אינן סובלות מבעיה זו.

טווח זמן UNIX ב-64 ביט

ערכי 64 ביט מכסים טווח זמן רחב במיוחד (למעשה “לנצח”). ערכים שליליים מציינים תאריך לפני 1 בינואר 1970.


שאלות נפוצות – חותמת זמן UNIX

האם חותמת זמן UNIX היא ב-UTC, או בזמן מקומי? חותמת זמן UNIX היא תמיד בUTC. זמן מקומי נוצר רק בעת המרה לפי אזור זמן. לכן, הממיר בדרך כלל מציג הן את זמן UTC והן את הזמן המקומי.
איך אדע אם חותמת הזמן היא בשניות או באלפיות שנייה? עבור זמן עכשווי, לחותמת זמן בשניות יש בדרך כלל 10 ספרות. באלפיות שנייה יש בדרך כלל 13 ספרות והיא גדולה פי 1000 בערך. באופן כללי: ערך > 10¹² הוא בדרך כלל אלפיות שנייה.
מה משמעותה של חותמת זמן UNIX שלילית? חותמת זמן שלילית מייצגת תאריך לפני 1 בינואר 1970. לדוגמה, -1 מתאים ל**-31 בדצמבר 1969, 23:59:59 UTC**.
איך ממירים חותמת זמן UNIX ב-SQL? ב-MySQL תשתמשו ב-FROM_UNIXTIME(timestamp) ובחזרה UNIX_TIMESTAMP(date). ב-PostgreSQL זה בדרך כלל TO_TIMESTAMP(timestamp) ו-EXTRACT(EPOCH FROM date).
למה אפוקת UNIX מתחילה ב-1 בינואר 1970? זוהי נקודת ייחוס שנבחרה היסטורית מימיה המוקדמים של UNIX: פשוטה, מעשית וקרובה לתקופת פיתוח המערכת.