تبدیل‌گر زمان Epoch

تبدیل برچسب‌های زمانی یونیکس به تاریخ‌های UTC یا تبدیل تاریخ به ثانیه‌های اپوک.

انتخاب کنید که آیا برچسب زمانی به تاریخ تبدیل شود یا تاریخ به برچسب زمانی.
برچسب زمانی یونیکس را به ثانیه وارد کنید.

مقدار تبدیل‌شده

2024-03-09T16:00:00.000Z

مقدار UTC2024-03-09T16:00:00.000Z
میلی‌ثانیه Unix۱٬۷۱۰٬۰۰۰٬۰۰۰٬۰۰۰
روز هفتهشنبه

نحوه استفاده از این مبدل زمان epoch

  1. حالت تبدیل را انتخاب کنید

    در فیلد Conversion mode، گزینه Epoch to date یا Date to epoch را انتخاب کنید.

  2. برای تبدیل epoch به تاریخ

    برچسب زمان Unix را به ثانیه در فیلد Epoch timestamp (seconds) وارد کنید.

  3. برای تبدیل تاریخ به epoch

    تاریخ را در Calendar date انتخاب کنید، سپس Hour (UTC)، Minute (UTC) و Second (UTC) را در صورت نیاز تنظیم کنید.

  4. مشاهده نتیجه

    این ماشین‌حساب مقدار UTC، میلی‌ثانیه یونیکس و روز هفته را نمایش می‌دهد.

روش‌شناسی

نحوه عملکرد این مبدل زمان اپوک

این مبدل زمان اپوک، برچسب‌های زمانی Unix را به تاریخ‌های UTC قابل خواندن برای انسان و برعکس تبدیل می‌کند. زمان Unix — که زمان POSIX یا زمان اپوک نیز نامیده می‌شود — تعداد ثانیه‌های سپری شده از Unix epoch را می‌شمارد که به عنوان نیمه‌شب UTC در ۱ ژانویه ۱۹۷۰ (1970-01-01T00:00:00Z) تعریف شده است. این نمایش تک‌عددی، استاندارد رایج برای ذخیره و انتقال برچسب‌های زمانی در پایگاه‌های داده، APIها، فایل‌های لاگ، توکن‌های JWT و تقریباً تمام زبان‌های برنامه‌نویسی مدرن است. این مبدل هر دو جهت را انجام می‌دهد: با وارد کردن یک برچسب زمانی عددی، تاریخ UTC مربوطه، روز هفته و معادل میلی‌ثانیه آن نمایش داده می‌شود، در حالی که با وارد کردن تاریخ و زمان تقویمی، مقدار اپوک بر حسب ثانیه و میلی‌ثانیه بازگردانده می‌شود.

فرمول
زمان Unix = ثانیه‌های سپری شده از 1970-01-01T00:00:00Z
اپوک نقطه مرجع: نیمه‌شب UTC در ۱ ژانویه ۱۹۷۰ (Unix timestamp 0)
زمان یونیکس (ثانیه) مجموع کل ثانیه‌ها از مبدأ (epoch) تا تاریخ و زمان مشخص شده
زمان یونیکس (میلی‌ثانیه) زمان یونیکس به ثانیه ضرب در ۱۰۰۰ — مورد استفاده در JavaScript Date، Java System.currentTimeMillis() و بسیاری از APIها
تاریخ UTC تاریخ تقویم میلادی و زمان ۲۴ ساعته مطابق با برچسب زمانی داده شده
روز هفته نام روز هفته برگرفته از تاریخ UTC تبدیل شده
مثال

برای تبدیل برچسب زمانی یونیکس ۱,۷۰۰,۰۰۰,۰۰۰ به تاریخ: با شروع از ۱۹۷۰-۰۱-۰۱ ۰۰:۰۰:۰۰ UTC، مقدار ۱,۷۰۰,۰۰۰,۰۰۰ ثانیه اضافه کنید. این معادل ۱۹,۶۷۵ روز، ۱۷ ساعت، ۴۶ دقیقه و ۴۰ ثانیه است. تاریخ UTC حاصل ۲۰۲۳-۱۱-۱۴ در ساعت ۲۲:۱۳:۲۰ UTC است که مصادف با یک سه‌شنبه است. معادل میلی‌ثانیه آن ۱,۷۰۰,۰۰۰,۰۰۰,۰۰۰ است. برعکس، وارد کردن ۱۴ نوامبر ۲۰۲۳ در ساعت ۲۲:۱۳:۲۰ UTC مقدار اپوک دقیقاً ۱,۷۰۰,۰۰۰,۰۰۰ را برمی‌گرداند.

برچسب زمانی 0 به 1970-01-01 00:00:00 UTC (پنجشنبه) تبدیل می‌شود. معادل میلی‌ثانیه آن 0 است.

برچسب زمانی 1,704,000,000 به 2023-12-31 12:00:00 UTC (یکشنبه) تبدیل می‌شود. وارد کردن این تاریخ و زمان در حالت «تاریخ به مبدأ»، مقدار 1,704,000,000 را برمی‌گرداند.

مفروضات
  • تمام محاسبات بر اساس UTC هستند. تبدیل به زمان محلی مستلزم اعمال اختلاف ساعت منطقه زمانی مربوطه پس از تبدیل است.
  • ثانیه‌های کبیسه محاسبه نمی‌شوند. مانند POSIX، این مبدل هر روز را دقیقاً ۸۶,۴۰۰ ثانیه در نظر می‌گیرد که با رفتار اکثر زبان‌های برنامه‌نویسی و سیستم‌عامل‌ها مطابقت دارد.
  • برچسب‌های زمانی منفی نشان‌دهنده تاریخ‌های قبل از مبدأ (۱ ژانویه ۱۹۷۰) هستند. به عنوان مثال، ۸۶۴۰۰- مربوط به ۳۱ دسامبر ۱۹۶۹ است.
  • برچسب‌های زمانی میلی‌ثانیه باید قبل از ورود بر ۱۰۰۰ تقسیم شوند؛ این مبدل ثانیه را به عنوان ورودی می‌پذیرد و معادل میلی‌ثانیه را در نتایج نمایش می‌دهد.
یادداشت‌ها
  • متدهای Date.now() در JavaScript و System.currentTimeMillis() در Java میلی‌ثانیه برمی‌گردانند، نه ثانیه — قبل از وارد کردن مقدار در اینجا، آن را بر ۱,۰۰۰ تقسیم کنید یا از خروجی میلی‌ثانیه برای مقایسه استفاده کنید.
  • مشکل سال ۲۰۳۸ بر برچسب‌های زمانی عدد صحیح ۳۲ بیتی علامت‌دار تأثیر می‌گذارد که در ۱۹ ژانویه ۲۰۳۸ ساعت ۰۳:۱۴:۰۷ UTC سرریز می‌شوند. اکثر سیستم‌های مدرن به برچسب‌های زمانی ۶۴ بیتی مهاجرت کرده‌اند.
  • هنگام عیب‌یابی پاسخ‌های API یا فایل‌های لاگ، مراقب برچسب‌های زمانی باشید که دقیقاً ۳,۶۰۰ یا ۷,۲۰۰ ثانیه اختلاف دارند — این معمولاً نشان‌دهنده اعمال (یا حذف) اختلاف منطقه زمانی در جایی از فرآیند است.
  • زمان اپوک همیشه به صورت یکنواخت صعودی است (با نادیده گرفتن تنظیمات ثانیه کبیسه)، که آن را برای مرتب‌سازی رویدادها، محاسبه مدت‌زمان‌ها و تولید شناسه‌های منحصر‌به‌فرد مبتنی بر زمان ایده‌آل می‌کند.
منابع
  1. IEEE Std 1003.1 (POSIX) — تعریف ثانیه‌ها از زمان اپوک
  2. منشأ اپوک یونیکس — مستندات The Unix Heritage Society و Bell Labs
  3. RFC 3339 — تاریخ و زمان در اینترنت: برچسب‌های زمانی

برچسب زمانی یونیکس چیست؟

برچسب زمانی یونیکس تعداد ثانیه‌های سپری شده از نیمه‌شب UTC در ۱ ژانویه ۱۹۷۰ (مبدأ یونیکس) است. این عدد صحیح، استاندارد رایج برای نمایش زمان در پایگاه‌های داده، APIها، فایل‌های لاگ و اکثر زبان‌های برنامه‌نویسی است. از آنجا که این مقدار مستقل از منطقه زمانی و همواره رو به افزایش است، مرتب‌سازی، محاسبه مدت‌زمان و مقایسه‌های زمانی را ساده می‌کند. تابع Date.now() در جاوااسکریپت و بسیاری از APIها زمان را به میلی‌ثانیه (۱۰۰۰ × ثانیه) برمی‌گردانند، بنابراین قبل از وارد کردن مقدار میلی‌ثانیه در اینجا، آن را بر ۱۰۰۰ تقسیم کنید. برچسب‌های زمانی منفی نشان‌دهنده تاریخ‌های قبل از ۱۹۷۰ هستند؛ برای مثال، ۸۶۴۰۰- دقیقاً یک روز قبل از مبدأ است.

موارد استفاده زمان مبدأ برای توسعه‌دهندگان

توسعه‌دهندگان از برچسب‌های زمانی یونیکس برای ذخیره زمان رویدادها در پایگاه‌های داده، سریال‌سازی تاریخ‌ها در APIهای JSON، تولید کلیدهای کش مبتنی بر زمان و عیب‌یابی لاگ‌ها استفاده می‌کنند. ستون‌های پایگاه داده اغلب برچسب‌های زمانی را به صورت اعداد صحیح ذخیره می‌کنند تا ایندکس‌گذاری و پرس‌وجوهای بازه‌ای بهینه انجام شود. پاسخ‌های API معمولاً ثانیه یا میلی‌ثانیه مبدأ را برمی‌گردانند تا از ابهام منطقه زمانی جلوگیری شود. هنگام عیب‌یابی، تبدیل یک برچسب زمانی خام از یک لاگ یا ادعای JWT به تاریخی قابل خواندن برای انسان، به سرعت مشخص می‌کند که آیا مقدار صحیح است یا به دلیل اختلاف منطقه زمانی خطا دارد. زمان مبدأ همچنین برای محدود کردن نرخ درخواست، انقضای نشست و تولید شناسه‌های منحصربه‌فرد قابل مرتب‌سازی در سیستم‌های توزیع‌شده استفاده می‌شود.

سوالات متداول مبدل زمان اپوک

اپوک یونیکس چیست؟

اپوک یونیکس نقطه مرجعی است که زمان یونیکس از آن اندازه‌گیری می‌شود: نیمه‌شب UTC در ۱ ژانویه ۱۹۷۰ (1970-01-01T00:00:00Z). برچسب زمانی ۰ دقیقاً با آن لحظه مطابقت دارد.

چرا برچسب زمانی JavaScript من ارقام بیشتری دارد؟

تابع Date.now() در جاوااسکریپت میلی‌ثانیه‌های سپری شده از مبدأ زمانی (epoch) را برمی‌گرداند، نه ثانیه. برای تبدیل به فرمت ثانیه‌محور مورد استفاده در این ابزار، آن را بر ۱۰۰۰ تقسیم کنید یا مستقیماً با خروجی میلی‌ثانیه مقایسه نمایید.

آیا می‌توانم برچسب زمانی (timestamp) منفی وارد کنم؟

بله. مقادیر منفی نشان‌دهنده تاریخ‌های قبل از مبدأ زمانی (epoch) هستند. برای مثال، ۸۶۴۰۰- معادل 1969-12-31T00:00:00Z است که دقیقاً یک روز قبل از مبدأ زمانی است.

آیا این ابزار ثانیه‌های کبیسه را مدیریت می‌کند؟

خیر، و این مطابق با استاندارد POSIX است. زمان POSIX فرض می‌کند که هر روز دقیقاً ۸۶,۴۰۰ ثانیه است. ۲۷ ثانیه کبیسه‌ای که از سال ۱۹۷۲ اضافه شده‌اند به صورت جداگانه نمایش داده نمی‌شوند، به این معنی که زمان UTC و زمان یونیکس (Unix time) می‌توانند در مرزهای ثانیه کبیسه تا یک ثانیه با هم تفاوت داشته باشند.

مشکل سال ۲۰۳۸ چیست؟

سیستم‌هایی که زمان یونیکس را به صورت یک عدد صحیح ۳۲ بیتی علامت‌دار ذخیره می‌کنند، در ۱۹ ژانویه ۲۰۳۸ ساعت ۰۳:۱۴:۰۷ UTC دچار سرریز (overflow) می‌شوند و به یک عدد منفی بزرگ تغییر کرده و تاریخ‌هایی در سال ۱۹۰۱ تولید می‌کنند. اکثر پلتفرم‌های مدرن امروزه از برچسب‌های زمانی ۶۴ بیتی استفاده می‌کنند که تا بیش از ۲۹۰ میلیارد سال دیگر دچار سرریز نخواهند شد.

نوشته شده توسط یان کرنک مؤسس و توسعه‌دهنده اصلی
بازبینی شده توسط بررسی متدولوژی DigitSum تأیید فرمول و تضمین کیفیت
آخرین به‌روزرسانی ۱۹ اسفند ۱۴۰۴

از این به عنوان یک تخمین استفاده کنید و تصمیمات مهم را با یک متخصص واجد شرایط تأیید نمایید.

ورودی‌ها در مرورگر باقی می‌مانند، مگر اینکه در آینده قابلیتی خلاف آن را صراحتاً اعلام کند.