نکات کلیدی
- 01تایماستمپ یونیکس ثانیههای سپریشده را از ساعت ۰۰:۰۰:۰۰ UTC در ۱ ژانویه ۱۹۷۰ میشمارد، که به آن Epoch گفته میشود.
- 02عدد ۱۰ رقمی معمولاً ثانیه است؛ عدد ۱۳ رقمی معمولاً میلیثانیه است — برای تبدیل بر ۱۰۰۰ تقسیم کنید.
- 03زمان یونیکس همیشه UTC است، بنابراین همان تایماستمپ در مناطق زمانی مختلف، ساعات ساعت مختلفی را نشان میدهد.
تعریف، در یک جملهٔ واحد
تایماستمپ یونیکس تعداد ثانیهای است که از ساعت ۰۰:۰۰:۰۰ UTC در ۱ ژانویه ۱۹۷۰ گذر کرده است. این لحظهٔ شروع را Epoch یونیکس مینامند، و هر تایماستمپ از آن اندازهگیری میشود. در حال حاضر این مقدار جایی حدود ۱٫۷ میلیارد است.
دلیل توافق رایانهها بر یک تاریخ دلخواه بهینهسازی است. یک عدد صحیح بسیار سادهتر از رشتهٔ "۲۴ ژوئن ۲۰۲۶، ساعت ۳:۱۴ بعدازظهر در منطقهٔ زمانی تابستانی اروپای مرکزی" است برای ذخیره، مقایسه و انجام محاسبات. مرتبسازی رویدادها، سنجش مدت زمان یک کار، یا بررسی اینکه کدام رویداد قبلتر رخ داده، همه به مقایسهٔ دو عدد صحیح ختم میشود.
از آنجایی که شمارش از UTC ریشه دارد، تایماستمپ یونیکس هیچ منطقهٔ زمانی درونی ندارد. همین عدد، ۱۷۵۰۰۰۰۰۰۰، یک لحظهٔ واحد در نقاط مختلف زمین است — فقط در توکیو بهصورت متفاوتی نسبت به نیویورک نمایش یافته است. مناطق زمانی فقط زمانی اعمال میشوند که عدد دوباره به یک تاریخ قابلفهم انسان تبدیل شود.
ثانیه در برابر میلیثانیه: نحوهٔ تشخیص آنها
تایماستمپ کلاسیک یونیکس بر حسب ثانیه اندازهگیری میشود، اما بسیاری از نرمافزارهای نوین — بهخصوص JavaScript — بر حسب میلیثانیه اندازهگیری میکنند، که ۱۰۰۰ برابر بیشتر است. اختلاط این دو رایجترین خطای تایماستمپ است و تاریخی را در سال ۱۹۷۰ یا تقریباً ۵۰ هزار سال آینده تولید میکند.
سریعترین راه برای تشخیص آنها تعداد ارقام است. تایماستمپ ثانیه برای هر تاریخ اخیر ۱۰ رقم دارد (۱۷۵۰۰۰۰۰۰۰). نسخهٔ میلیثانیهای از همان لحظه ۱۳ رقم دارد (۱۷۵۰۰۰۰۰۰۰۰۰). اگر مقداری ۱۰۰۰ برابر بزرگتر به نظر برسد، تقریباً مطمئناً میلیثانیه است — برای رسیدن به ثانیه بر ۱۰۰۰ تقسیم کنید. اگر کتابخانهای میلیثانیه انتظار دارد و شما ثانیه بدهید، در ۱۰۰۰ ضرب کنید.
برخی سیستمها دقت بیشتری دارند: میکروثانیه (۱۶ رقم) و نانوثانیه (۱۹ رقم) در ثبت دقیق و پایگاههای داده دیده میشوند. قانون یکسان است — هر مرحله یک ضریب ۱۰۰۰ است. در هنگام شک، عدد را در مبدل قرار دهید و ببینید که آیا تاریخ حاصل نزدیک امروز است.
نحوهٔ تبدیل تایماستمپ یونیکس به یک تاریخ
شما نیازی به انجام ریاضی با دست ندارید. عدد را جا بگذارید و تاریخ را در منطقهٔ زمانی خود و در UTC ببینید.
- 01
مبدل تایماستمپ یونیکس را باز کنید
به مبدل تایماستمپ یونیکس Handytool بروید. همه چیز در مرورگر شما اجرا میشود، بنابراین هیچ چیز به سرور ارسال نمیشود.
- 02
عدد را جا بگذارید
تایماستمپ را بریزید. ابزار بر اساس طول آن بطور خودکار تشخیص میدهد که آیا ثانیه است یا میلیثانیه، بنابراین به ندرت لازم است که مشخص کنید.
- 03
تاریخ انسانی را بخوانید
تاریخ و ساعت را هم در UTC و هم در منطقهٔ زمانی محلی خود ببینید، تا بتوانید تأیید کنید که لحظهٔ درست را میخوانید.
- 04
در جهت دیگر بروید
تاریخ و ساعت تقویم را وارد کنید تا تایماستمپ یونیکس مطابقت را برای ذخیرهسازی در پایگاه داده، فراخوانی API یا کار برنامهریزیشدهٔ بدست آورید.
چرا سال ۱۹۷۰، و سایر خصوصیات
Epoch توسط مهندسان ساختن یونیکس در Bell Labs در اوایل دهه ۱۹۷۰ انتخاب شد. باید تاریخی اخیر، گرد و مناسب بود، و شروع سال ۱۹۷۰ مناسب بود — به اندازهٔ کافی نزدیک بود که شمارنده فوریاً به اعداد بزرگ نیاز نداشته باشد، و به اندازهٔ کافی عقب بود تا پرونده و زمانهای فرآیند مورد نظر آنها را پوشش دهد. تایماستمپهای منفی لحظات قبل از سال ۱۹۷۰ را نشان میدهند، بنابراین این طرح تاریخهای تاریخی را هم مدیریت میکند.
یک ظرافت: زمان یونیکس ثانیههای leap را نادیده میگیرد. UTC واقعی گاهی اوقات یک ثانیهٔ اضافی را برای تراز شدن با چرخش کمی نامنظم زمین درج میکند، اما زمان یونیکس وانمود میکند که هر روز دقیقاً ۸۶٬۴۰۰ ثانیه دارد. این حسابگری را ساده نگه میدارد در عوض کمی از زمان دقیق نجومی فاصله میگیرد — تبادلهٔ متعادلی که تقریباً همه خوشحال هستند.
زمانی که باید یک تایماستمپ را با رویدادی Discord، برنامهٔ cron، یا شمارنده معکوس تراز کنید، کمک کننده است که مبدل را با ابزار منطقهٔ زمانی جفت کنید تا بتوانید همان لحظه را در مناطقی که مخاطبین شما در آنجا زندگی میکنند ببینید.
سوالات متداول تایماستمپ یونیکس
آیا تایماستمپ یونیکس بر حسب ثانیه یا میلیثانیه است؟
به سیستم بستگی دارد. زمان یونیکس سنتی بر حسب ثانیه است (عدد ۱۰ رقمی برای تاریخهای اخیر)؛ JavaScript و بسیاری از APIهای وب از میلیثانیه استفاده میکنند (۱۳ رقم). برای رفتن از میلیثانیه به ثانیه بر ۱۰۰۰ تقسیم کنید، یا برای عکس در ۱۰۰۰ ضرب کنید.
آیا تایماستمپ یونیکس شامل منطقهٔ زمانی است؟
خیر. زمان یونیکس همیشه در UTC شمارده میشود و هیچ منطقهٔ زمانی ندارد. منطقه فقط زمانی اعمال میشود که عدد را به یک تاریخ قابلخوانایی تبدیل کنید، که برای این است چرا همان تایماستمپ ساعات ساعت مختلفی را در سراسر جهان نشان میدهد.
تایماستمپ یونیکس فعلی چیست؟
هر ثانیه تغییر میکند. از نیمهٔ سال ۲۰۲۶ تقریباً ۱٫۷۵ میلیارد است. مبدل را باز کنید تا مقدار زندهٔ آن را ببینید و هر تاریخی را به تایماستمپ خود تبدیل کنید.
زمان Epoch چیست؟
"زمان Epoch" نام دیگری برای زمان یونیکس است. Epoch منشاء ثابت است — ۱ ژانویه ۱۹۷۰ در ساعت ۰۰:۰۰:۰۰ UTC — و زمان Epoch تعداد ثانیههای شمارششده از آن است.
آیا تایماستمپ یونیکس میتواند منفی باشد؟
بله. تاریخهای قبل از ۱ ژانویه ۱۹۷۰ بهصورت اعداد منفی نشانداده میشوند، با شمارش ثانیهها بهعقب از Epoch.