نحوه استفاده
- یک timestamp را در «timestamp → تاریخ» جایگذاری کنید. ابزار تشخیص میدهد که واحد آن ثانیه، میلیثانیه، میکروثانیه یا نانوثانیه است یا میتوانید واحد را انتخاب کنید.
- تاریخ را در زمان محلی خود، بهصورت UTC، ISO 8601 و RFC 2822 بخوانید و قالب مورد نیاز خود را کپی کنید.
- برای تبدیل برعکس، در بخش «تاریخ → timestamp» تاریخ و زمانی انتخاب کنید و مشخص کنید که زمان محلی است یا UTC.
- زمان یونیکس فعلی در بالا هر ثانیه بهروزرسانی میشود. برای کپی یک مقدار ثابت، آن را متوقف کنید.
نحوه کار
زمان Unix (که به آن epoch یا POSIX time هم میگویند) ثانیهها را از 1 ژانویه 1970، ساعت 00:00:00 UTC میشمارد. این عدد در هر لحظه در همه جای دنیا یکسان است و به همین دلیل در پایگاههای داده، لاگها، APIها و سیستمهای فایل استفاده میشود. زمانهای قبل از 1970 منفی هستند: -86400 برابر با 31 دسامبر 1969 است.
سیستمهای مختلف واحدهای متفاوتی به کار میبرند. ابزارهای Unix، PHP و بیشتر APIها از ثانیه استفاده میکنند (برای تاریخهای کنونی 10 رقم)، JavaScript و Java از میلیثانیه (13 رقم) و برخی پایگاههای داده و سیستمهای ردیابی از میکروثانیه (16 رقم) یا نانوثانیه (19 رقم) استفاده میکنند. تشخیص خودکار، رقمهای بخش صحیح را میشمارد: تا 11 رقم بهعنوان ثانیه، 12 تا 14 بهعنوان میلیثانیه، 15 تا 17 بهعنوان میکروثانیه و 18 رقم یا بیشتر بهعنوان نانوثانیه خوانده میشود. این تشخیص برای تاریخهای حدود 1973 تا 5138 درست است؛ برای تاریخهای دیگر واحد را خودتان انتخاب کنید.
نتایج در قالبهای مختلفی نمایش داده میشوند. ISO 8601 (مانند 2023-11-14T22:13:20.000Z) استاندارد تبادل داده است؛ Z به معنی UTC است. RFC 2822 (مانند Tue, 14 Nov 2023 22:13:20 +0000) در سرصفحههای ایمیل و فیدهای RSS استفاده میشود. زمان محلی بر اساس تنظیمات منطقه زمانی و زبان مرورگر شما نمایش داده میشود و شامل تغییر ساعت تابستانی است.
زمان Unix ثانیههای کبیسه را نادیده میگیرد: هر روز دقیقاً 86,400 ثانیه است. تاریخها با دقت میلیثانیه نمایش داده میشوند که وضوح تاریخهای JavaScript است؛ بنابراین رقمهای اضافی میکروثانیه و نانوثانیه در تاریخ نمایشدادهشده حذف میشوند.
نمونهها
خواندن یک خط لاگ
یک خط لاگ شامل ts=1700000000 است. این عدد 10 رقم دارد، بنابراین بهعنوان ثانیه خوانده میشود: سهشنبه، 14 نوامبر 2023، ساعت 22:13:20 UTC، که در ناحیه زمانی خودتان در زیر آن نمایش داده میشود.
مقدار Date.now() در JavaScript
1700000000000 دارای 13 رقم است و بهعنوان میلیثانیه خوانده میشود: همان لحظهای که در مثال بالا بود. اگر آن را بر 1,000 تقسیم کنید، زمان Unix بر حسب ثانیه را به دست میآورید که بکاند PHP یا Python انتظار دارد.
تنظیم انقضا برای یک توکن API
برای اینکه چیزی در 1 ژانویه 2030، نیمهشب UTC منقضی شود، آن تاریخ را با انتخاب «UTC» برگزینید: مقدار ثانیهای Unix برابر 1893456000 است و برای یک claim با نام exp یا یک هدر cache آماده است.
پرسشهای متداول
چگونه بفهمم timestamp من بر حسب ثانیه است یا میلیثانیه؟
رقمها را بشمارید. برای تاریخهای دهههای اخیر، ثانیهها 10 رقم دارند (مثلاً 1700000000) و میلیثانیهها 13 رقم (مثلاً 1700000000000). ابزار این کار را بهطور خودکار انجام میدهد و به شما میگوید از کدام واحد استفاده کرده است.
آیا timestamp Unix به منطقه زمانی بستگی دارد؟
خیر. یک timestamp یک لحظه را مشخص میکند و در همه جا یکسان است. فقط نمایش آن بهصورت تاریخ تقویمی و ساعت به منطقه زمانی بستگی دارد؛ به همین دلیل ابزار هم UTC و هم زمان محلی شما را نشان میدهد.
مشکل سال ۲۰۳۸ چیست؟
سیستمهایی که زمان یونیکس را بهصورت عدد صحیح علامتدار ۳۲ بیتی ذخیره میکنند فقط میتوانند تا ۲٬۱۴۷٬۴۸۳٬۶۴۷ بشمارند که برابر با ۱۹ ژانویه ۲۰۳۸، ساعت ۰۳:۱۴:۰۷ UTC است. یک ثانیه بعد مقدار سرریز میشود. سیستمهای مدرن از مقادیر ۶۴ بیتی استفاده میکنند و این مشکل را ندارند؛ این ابزار تحت تأثیر آن قرار نمیگیرد.
آیا میتوانم تاریخهای قبل از ۱۹۷۰ را تبدیل کنم؟
بله. یک timestamp منفی مانند -31536000 (۱ ژانویه ۱۹۶۹) وارد کنید یا در «تاریخ → timestamp» تاریخ زودتری انتخاب کنید.
چرا اختلاف زمان محلی با UTC عددی غیرعادی است؟
برخی منطقههای زمانی ۳۰ یا ۴۵ دقیقه اختلاف دارند (برای مثال هند در UTC+5:30 و نپال در UTC+5:45) و ساعت تابستانی در بخشی از سال این اختلاف را تغییر میدهد. زمان محلی نمایشدادهشده از قوانین منطقه زمانی دستگاه شما برای آن تاریخ پیروی میکند.
حریم خصوصی
همه تبدیلها از ساعت و توابع تاریخ مرورگر شما استفاده میکنند. هیچچیز که وارد میکنید بارگذاری، ذخیره یا در analytics گنجانده نمیشود.