RevealTheme logo

مبدل Unix timestamp

بین Unix timestamp و تاریخ‌های خوانا برای انسان تبدیل کنید. به‌صورت آنی به‌روزرسانی می‌شود.

Unix timestamp چیست و چرا APIها از آن استفاده می‌کنند؟

Unix timestamp (که تایم epoch یا تایم POSIX نیز نامیده می‌شود) یک عدد صحیح واحد است که تعداد ثانیه‌های سپری‌شده از ۱ ژانویه ۱۹۷۰ ساعت ۰۰:۰۰:۰۰ UTC را نشان می‌دهد، لحظه‌ای که با عنوان «مبدأ Unix» (Unix epoch) شناخته می‌شود. این قرارداد به نخستین سیستم‌عامل Unix در آزمایشگاه‌های Bell در دهه ۱۹۷۰ بازمی‌گردد. مزیت آن نسبت به تاریخ‌های خوانا این است که یک عدد واحد و مستقل از منطقه زمانی است، مقایسه و انجام عملیات ریاضی روی آن آسان است و میان سیستم‌ها بدون ابهام است. هر پایگاه داده، فایل لاگ، JWT، توکن OAuth و بیشتر APIهای مدرن به‌صورت داخلی از Unix timestamp استفاده می‌کنند. ادعای 'exp' در یک JWT یک Unix timestamp است؛ مقدار 'created_at' در بیشتر APIها یک تایم Unix یا رشته‌ای ISO 8601 مشتق‌شده از آن است؛ زمان تغییر فایل‌ها در Linux/macOS به‌صورت تایم Unix ذخیره می‌شود. دو گونه رایج وجود دارد که باید آن‌ها را از هم تشخیص دهید: ثانیه (قرارداد اصلی Unix که در JWT، OAuth و فراداده‌های فایل‌های Linux استفاده می‌شود) و میلی‌ثانیه (که در Date.now() جاوااسکریپت، System.currentTimeMillis() جاوا و بسیاری از APIهای مدرن استفاده می‌شود). یک timestamp ۱۰ رقمی بر حسب ثانیه است؛ یک timestamp ۱۳ رقمی بر حسب میلی‌ثانیه است. این ابزار هر دو را مدیریت می‌کند: هر قالبی را در هر فیلدی جای‌گذاری کنید و ما به‌طور خودکار آن را تشخیص داده و تبدیل می‌کنیم. مفهوم دیگری که خوب است بدانید: ISO 8601 قالب استاندارد خوانا است (2025-12-31T23:59:59Z) که به‌طور دقیق به ترتیب الفبایی مرتب می‌شود و در همه‌جا قابل تجزیه است. هر زمان که می‌توانید میان ذخیره timestampها به‌صورت اعداد صحیح Unix یا رشته‌های ISO 8601 یکی را انتخاب کنید، برای کارایی Unix و برای خوانایی ISO 8601 را ترجیح دهید.

موارد استفاده رایج

  • ادعای 'exp' یا 'iat' را از محتوای یک JWT رمزگشایی کنید تا زمان انقضای آن را ببینید.

  • مُهرهای زمانی پاسخ‌های API را برای اشکال‌زدایی به منطقه‌ی زمانی محلی خود تبدیل کنید.

  • برای تنظیم هدرهای انقضای کوکی، مُهر زمانی تولید کنید.

  • مُهرهای زمانی پایگاه‌داده (ثانیه‌های epoch) را برای تجزیه‌ی گزارش‌ها به قالب ISO 8601 تبدیل کنید.

  • زمان سپری‌شده میان دو رویداد را با تفریق مُهرهای زمانی Unix آن‌ها محاسبه کنید.

  • کارهای cron را با دستور at و مُهرهای زمانی صریح Unix زمان‌بندی کنید.

پرسش‌های متداول

چرا ۱۹۷۰؟
این یک قرارداد از نخستین سیستم‌های Unix در آزمایشگاه‌های Bell است. این انتخاب دلبخواهی بود اما باقی ماند. عدد صحیح علامت‌دار ۳۲ بیتی که در ابتدا آن را ذخیره می‌کرد، ساعت ۲:۱۴:۰۷ UTC روز ۱۹ ژانویه ۲۰۳۸ سرریز می‌شود: «مشکل سال ۲۰۳۸». سیستم‌های مدرن از اعداد صحیح ۶۴ بیتی استفاده می‌کنند که سرریز را به سال ۲۹۲٬۲۷۷٬۰۲۶٬۵۹۶ می‌برد.
ثانیه یا میلی‌ثانیه؟
Unix timestamp بر حسب ثانیه است (در سال ۲۰۲۵ اعداد ۱۰ رقمی). Date.now() جاوااسکریپت و System.currentTimeMillis() جاوا از میلی‌ثانیه استفاده می‌کنند (۱۳ رقمی). همیشه بررسی کنید که APIای که فراخوانی می‌کنید کدام را انتظار دارد: یک ضریب ۱۰۰۰ کم یا اضافه، رایج‌ترین خطای timestamp در محیط تولید است.
چگونه این timestamp را در منطقه زمانی خودم ببینم؟
Unix timestampها مستقل از منطقه زمانی هستند: در همه‌جا همان لحظه را نشان می‌دهند. برای نمایش آن در منطقه محلی خود، timestamp را به همراه منطقه مناسب به قالب‌بند تاریخ زبان خود بدهید. در جاوااسکریپت: new Date(ts*1000).toLocaleString('fa-IR', { timeZone: 'America/New_York' }).
تفاوت بین تایم Unix و UTC چیست؟
تایم Unix یک عدد واحد است؛ UTC یک نمایش است که شامل سال، ماه، روز، ساعت، دقیقه و ثانیه می‌شود. Unix timestampها بنا بر قرارداد همیشه در UTC هستند: چیزی به نام «تایم Unix در EST» وجود ندارد. نمایش می‌تواند در هر منطقه‌ای باشد، اما عدد زیرین جهانی است.
ثانیه‌های کبیسه چگونه مدیریت می‌شوند؟
تایم Unix ثانیه‌های کبیسه را نادیده می‌گیرد: وانمود می‌کند که هر روز دقیقاً ۸۶٬۴۰۰ ثانیه دارد. این یعنی تایم Unix می‌تواند هنگام درج ثانیه‌های کبیسه برای لحظه‌ای به عقب برگردد یا متوقف شود. برای بیشتر برنامه‌ها نامرئی است؛ برای سیستم‌های با دقت بالا (GPS، معاملات مالی) از TAI (زمان اتمی بین‌المللی) استفاده کنید.
آیا Unix timestamp می‌تواند منفی باشد؟
بله: آن‌ها تاریخ‌های پیش از ۱۹۷۰ را نشان می‌دهند. timestampهای منفی در بیشتر زبان‌ها کار می‌کنند، هرچند برخی سیستم‌های قدیمی آن‌ها را نمی‌پذیرند.
timestamp از نوع ISO 8601 چیست؟
ISO 8601 استاندارد بین‌المللی برای قالب تاریخ/زمان خوانا است: AAAA-MM-DDTHH:MM:SSZ (Z = UTC، یا +HH:MM برای سایر اختلاف‌ها). نمونه: 2025-12-31T23:59:59Z. رشته‌های ISO 8601 به ترتیب الفبایی همان ترتیب زمانی مرتب می‌شوند، که آن‌ها را برای فایل‌های لاگ و پرس‌وجوهای پایگاه داده عالی می‌کند.

ابزارهای مرتبط

کدگشای JWT

توکن‌های JSON Web Token (JWT) را فوراً کدگشایی کنید. در مرورگر شما اجرا می‌شود: توکن‌ها هرگز از دستگاه شما خارج نمی‌شوند، پس استفاده از آن با اسرار محیط تولید (production) امن است.

قالب‌بند و اعتبارسنج JSON

JSON را به‌صورت آنلاین قالب‌بندی، اعتبارسنجی و فشرده کنید. کاملاً در مرورگر شما کار می‌کند: داده‌های شما هرگز دستگاهتان را ترک نمی‌کنند.

قالب‌بند XML

اسناد XML را قالب‌بندی و زیبا کنید. مفید برای SOAP، نقشه‌های سایت، فیدهای RSS و فایل‌های پیکربندی.

کدگذار و کدگشای Base64

رشته‌ها را به Base64 کدگذاری یا Base64 را به متن کدگشایی کنید. به حریم خصوصی شما احترام می‌گذارد: در مرورگر شما اجرا می‌شود.

کدگذار و کدگشای URL

متن را به کدگذاری امن برای URL (کدگذاری درصدی) و برعکس تبدیل کنید. مفید برای رشته‌های پرس‌وجو، تغییر مسیرها و جریان‌های OAuth.

کدگذار و کدگشای موجودیت‌های HTML

کاراکترهای خاص را به موجودیت‌های HTML (&، < و غیره) و برعکس تبدیل می‌کند. برای جای‌دادن امن متن در HTML مفید است.