توسعه‌دهنده 🔒 در مرورگر اجرا می‌شود — داده‌ای ارسال نمی‌شود

مبدل تایم‌استمپ یونیکس

تایم‌استمپ یونیکس را به تاریخ خوانا و برعکس تبدیل کنید، در هر منطقه زمانی، همراه با زمان زنده.

تایم‌استمپ یونیکس فعلی:
تایم‌استمپ ← تاریخ
تاریخ ← تایم‌استمپ

در هر خط یک تایم‌استمپ یا تاریخ، تا ۵۰۰ خط.

مبدل تایم‌استمپ یونیکس — تبدیل Epoch به تاریخ و تاریخ به Epoch

لاگ‌ها، پایگاه‌های داده و APIها زمان را به شکل عدد ذخیره می‌کنند، اما آدم‌ها زمان را به شکل تاریخ می‌خوانند. این مبدل رایگان تایم‌استمپ یونیکس این فاصله را در هر دو جهت پر می‌کند: یک مقدار Epoch را بچسبانید تا تاریخ خوانا را ببینید، یا تاریخ و ساعت را انتخاب کنید تا عددی را بگیرید که کد شما انتظارش را دارد. تایم‌استمپ لحظه حاضر همیشه در بالای صفحه آماده کپی است.

همه محاسبات در مرورگر شما انجام می‌شود، بنابراین می‌توانید مقدارهای لاگ محیط اصلی و سامانه‌های داخلی را بدون فرستادن به هیچ‌جا تبدیل کنید.

نمودار: زمان یونیکس روی یک خط، از ۰ (۱ ژانویه‌ی ۱۹۷۰) تا ۲٬۱۴۷٬۴۸۳٬۶۴۷ یعنی سقف عدد صحیح ۳۲ بیتی در ۱۹ ژانویه‌ی ۲۰۳۸.ثانیه‌های گذشته از ۱ ژانویه‌ی ۱۹۷۰، ساعت ۰۰:۰۰:۰۰ UTC01970-01-0100:00:00 UTCمبدأ زمان یونیکس10000000002001-09-0901:46:40 UTCیک میلیارد ثانیه17000000002023-11-1422:13:20 UTC21474836472038-01-1903:14:07 UTCسقف عدد ۳۲ بیتی
تایم‌استمپ یونیکس فقط تعداد ثانیه‌هایی است که از مبدأ گذشته، و همیشه به وقت UTC است. منطقه‌ی زمانی فقط وقتی مهم است که عدد را به تاریخ محلی تبدیل می‌کنید. سیستم‌هایی که آن را در عدد صحیح ۳۲ بیتی علامت‌دار نگه می‌دارند، در ۱۹ ژانویه‌ی ۲۰۳۸ سرریز می‌شوند.

تایم‌استمپ یونیکس چیست

تایم‌استمپ یونیکس که به آن زمان Epoch یا زمان POSIX هم می‌گویند، تعداد ثانیه‌های سپری‌شده از اول ژانویه ۱۹۷۰ ساعت ۰۰:۰۰:۰۰ به وقت UTC است. چون فقط یک عدد صحیح بدون منطقه زمانی، بدون تقویم و بدون قالب‌بندی است، هیچ ابهامی ندارد و به‌راحتی مرتب، مقایسه و کم و زیاد می‌شود. همین سادگی باعث شده تقریباً هر فایل لاگ، هر ستون پایگاه داده و هر پاسخ API در پشت صحنه از آن استفاده کند و تقریباً هر برنامه‌نویسی هفته‌ای چند بار مجبور شود آن را دوباره خوانا کند.

ثانیه یا میلی‌ثانیه؟ رقم‌ها را بشمارید

این رایج‌ترین منشأ اشتباه است. تایم‌استمپ بر حسب ثانیه در حال حاضر ۱۰ رقم دارد و همان لحظه بر حسب میلی‌ثانیه ۱۳ رقم. یونیکس، PHP، پایتون و بیشتر پایگاه‌های داده با ثانیه کار می‌کنند، در حالی که Date.now() در جاوااسکریپت، جاوا و بسیاری از سامانه‌های لاگ از میلی‌ثانیه استفاده می‌کنند. اگر تاریخ تبدیل‌شده در سال ۱۹۷۰ افتاد، میلی‌ثانیه را به ابزاری داده‌اید که ثانیه می‌خواسته. اگر ده‌ها هزار سال در آینده افتاد، عکس این اتفاق افتاده است. این مبدل خودش رقم‌ها را می‌شمارد: تا ۱۱ رقم ثانیه خوانده می‌شود، تا ۱۴ رقم میلی‌ثانیه، تا ۱۷ رقم میکروثانیه و بیشتر از آن نانوثانیه، و خطی زیر نتیجه می‌گوید کدام واحد را فرض کرده است. اگر اشتباه کرد، مثلاً برای مقداری به میلی‌ثانیه از اوایل دهه ۱۹۷۰، واحد را خودتان از منوی واحد به‌جای تشخیص خودکار انتخاب کنید.

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

  1. برای خواندن یک مقدار Epoch، آن را در کادر تایم‌استمپ بچسبانید و روی تبدیل بزنید.
  2. برای مسیر برعکس، تاریخ و ساعت را وارد کنید و در بخش تاریخ روی تبدیل بزنید.
  3. با درج زمان فعلی کادر را با لحظه فعلی پر کنید.
  4. هر وقت برای یک تست، یک توکن یا یک کوئری به عدد نیاز داشتید، تایم‌استمپ زنده بالای صفحه را کپی کنید.
  5. از انتخابگر یک منطقه زمانی برگزینید تا تاریخ را در همان منطقه ببینید، یا تاریخی را به‌عنوان وقت محلی همان منطقه وارد کنید.
  6. برای تبدیل چند مقدار با هم، زبانه دسته‌ای را باز کنید، تا ۵۰۰ تایم‌استمپ یا تاریخ را هر کدام در یک خط بچسبانید و روی تبدیل همه بزنید. در حالت تشخیص خودکار واحد هر خط جداگانه تشخیص داده می‌شود و کپی به‌صورت CSV جدول را به صفحه‌گسترده می‌برد.

تایم‌استمپ‌هایی که خواهید شناخت

مقدارلحظهچرا مهم است
0اول ژانویه ۱۹۷۰ ساعت ۰۰:۰۰:۰۰ UTCخود مبدأ؛ دیدن تاریخ ۱۹۷۰ معمولاً یعنی مقدار خالی یا Null
1000000000۹ سپتامبر ۲۰۰۱نخستین تایم‌استمپ ده‌رقمی
1700000000۱۴ نوامبر ۲۰۲۳یک نقطه مرجع مدرن و کاربردی
2147483647۱۹ ژانویه ۲۰۳۸بزرگ‌ترین مقداری که در عدد صحیح علامت‌دار ۳۲ بیتی جا می‌شود
مقادیر منفیپیش از ۱۹۷۰معتبرند، اما بعضی کتابخانه‌ها و پایگاه‌های داده پشتیبانی نمی‌کنند

زمان Epoch کجا دیده می‌شود

  • در فیلدهای exp، iat و nbf داخل یک JWT — با رمزگشای JWT بازش کنید.
  • در لاگ سرور و برنامه، جایی که هر سطر با یک مقدار Epoch شروع می‌شود.
  • در ستون‌هایی مثل created_at که به‌جای نوع تاریخ، عدد صحیح ذخیره شده‌اند.
  • در انقضای کش، پنجره‌های محدودیت نرخ درخواست و زمان اجرای کارهای زمان‌بندی‌شده.
  • در داده Webhook و امضای API که برای جلوگیری از حمله تکرار، مهر زمانی دارند.
  • در زمان آخرین تغییر فایل که سیستم‌عامل گزارش می‌دهد.

منطقه زمانی و اینکه چرا تاریخ اشتباه به نظر می‌رسد

تایم‌استمپ منطقه زمانی ندارد؛ یک نقطه مطلق در زمان است. تاریخی که می‌بینید نمایش همان نقطه در یک منطقه مشخص است، پس یک عدد ثابت در تهران، برلین و توکیو ساعت محلی متفاوتی نشان می‌دهد. وقتی مقداری چند ساعت جابه‌جا به نظر می‌رسد، تقریباً هرگز عدد اشتباه نیست بلکه منطقه نمایش اشتباه است. داده را با UTC ذخیره و منتقل کنید، فقط هنگام نمایش به کاربر به وقت محلی تبدیل کنید و هنگام مقایسه یک سطر لاگ با یک اسکرین‌شات، اختلاف ساعت را در نظر بگیرید.

دام‌هایی که باید بشناسید

  • مشکل سال ۲۰۳۸. سامانه‌هایی که هنوز فیلد زمان ۳۲ بیتی علامت‌دار دارند در ۱۹ ژانویه ۲۰۳۸ سرریز می‌کنند. برای داده‌های بلندمدت از نوع ۶۴ بیتی استفاده کنید.
  • ساعت تابستانی. ساعت محلی ممکن است یک ساعت تکرار یا حذف شود، اما مقدار Epoch هرگز چنین رفتاری ندارد.
  • ثانیه کبیسه. زمان یونیکس آن را نادیده می‌گیرد، پس شمارش دقیق ثانیه‌های فیزیکی نیست.
  • رشته به‌جای عدد. تایم‌استمپی که به شکل متن ذخیره شود الفبایی مرتب می‌شود و به‌محض تغییر تعداد رقم‌ها خراب می‌شود.
  • گرد کردن. تبدیل میلی‌ثانیه به ثانیه با حذف اعشار می‌تواند یک رویداد را به ثانیه قبل ببرد؛ در همه‌جا یک روش ثابت به کار ببرید.

تایم‌استمپ دیسکورد

اگر تایم‌استمپ یونیکس را به شکل <t:1700000000:F> بنویسید، دیسکورد آن را به‌صورت تاریخ زنده و متناسب با منطقه زمانی هر نفر نمایش می‌دهد. هر حرف سبک شکل متفاوتی نشان می‌دهد: t ساعت کوتاه، T ساعت متوسط (با ثانیه)، d تاریخ کوتاه، D تاریخ بلند، f تاریخ بلند با ساعت کوتاه (پیش‌فرض)، F تاریخ کامل همراه با روز هفته و ساعت کوتاه، s تاریخ کوتاه با ساعت کوتاه، S تاریخ کوتاه با ساعت متوسط، و R برای شکل نسبی مثل «۳ ساعت دیگر». هر خواننده آن را به وقت محلی خودش می‌بیند - و اصل ماجرا همین است.

زبانه دیسکورد در همین مبدل این کدها را برایتان می‌سازد: تاریخ و ساعت را انتخاب کنید یا درج زمان فعلی را بزنید؛ جدول هر سبک را با کد آماده در ستون کد، دکمه کپی و پیش‌نمایشی در ستون این‌طور دیده می‌شود نشان می‌دهد. این زبانه ساعت را در منطقه زمانی دستگاه خودتان می‌خواند و منوی منطقه زمانی را نادیده می‌گیرد، پس فقط وقتی درست است که رویداد به ساعت دستگاه خودتان باشد. برای رویدادی که در منطقه دیگری برنامه‌ریزی شده، همان منطقه را از منوی منطقه زمانی انتخاب کنید، تاریخ و ساعت را در بخش تاریخ ← تایم‌استمپ وارد کنید، تبدیل را بزنید و مقدار ثانیه را خودتان داخل <t:...:F> بگذارید. زبانه دسته‌ای ستون منطقه زمانی انتخاب‌شده را به منطقه منو نشان می‌دهد، اما تاریخی را که بدون اختلاف ساعت نوشته شود باز هم به منطقه دستگاه می‌خواند؛ پس برای یک برنامه زمانی، اختلاف ساعت را در هر خط بنویسید، مثل 2026-10-01T18:00-04:00.

تبدیل تایم‌استمپ در کد، SQL و اکسل

زبانه کد در همین مبدل این تبدیل را برای مقدار کادر تایم‌استمپ، یا اگر کادر خالی باشد برای زمان فعلی، به زبان‌های JavaScript، Python، PHP، SQL، Go، Java، C# و Bash می‌نویسد و دکمه‌ای برای کپی آن دارد. جدول زیر نسخه کوتاهی است که دم دست باشد.

کجاتایم‌استمپ فعلیتایم‌استمپ به تاریخ
JavaScriptMath.floor(Date.now() / 1000)new Date(ts * 1000)
Pythonint(time.time())datetime.fromtimestamp(ts, tz=timezone.utc)
PHPtime()date('Y-m-d H:i:s', $ts)
MySQLUNIX_TIMESTAMP()FROM_UNIXTIME(ts)
PostgreSQLEXTRACT(EPOCH FROM now())to_timestamp(ts)
خط فرمان لینوکسdate +%sdate -d @1700000000
Excel / Google Sheets-=A1/86400 + DATE(1970,1,1)، سپس فرمت سلول را تاریخ بگذارید (به وقت UTC؛ برای میلی‌ثانیه بر 86400000 تقسیم کنید)

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

مقدارهای زمانی معمولاً تنها نمی‌آیند. زمان انقضای توکن را با رمزگشای JWT بررسی کنید، داده لاگ را با فرمت‌کننده JSON مرتب کنید، الگوی تاریخ در متن را با آزمایشگر Regex پیدا کنید و شناسه درخواست را با سازنده UUID بسازید. برای اینکه ببینید یک کار زمان‌بندی‌شده دفعهٔ بعد کی اجرا می‌شود، از توضیح‌دهندهٔ عبارت Cron استفاده کنید.

آموزش‌های مرتبط