مبدل تایماستمپ یونیکس به تاریخ: پشتیبانی از فرمت ۱۲/۲۴ ساعته
تایماستمپهای یونیکس را به تاریخ و زمان قابل خواندن برای انسان تبدیل کنید. با این ابزار مبدل ساده و کاربرپسند، بین فرمتهای زمانی ۱۲ ساعته و ۲۴ ساعته انتخاب کنید.
مبدل برچسب زمانی یونیکس
زمان یونیکس تعداد ثانیههایی است که از ۱ ژانویه ۱۹۷۰ (UTC) گذشته است
تاریخ و زمان تبدیل شده
زمان یونیکس چیست؟
زمان یونیکس تعداد ثانیههایی است که از ۱ ژانویه ۱۹۷۰ (نیمه شب UTC/GMT) گذشته است و ثانیههای کبیسه را شامل نمیشود. این زمان به طور گستردهای در سیستمهای یونیکس و زبانهای برنامهنویسی برای محاسبات تاریخ و زمان استفاده میشود.
مستندات
مبدل مُهر زمانی یونیکس به تاریخ
مُهر زمانی یونیکس عددی است که نقطهای مشخص در زمان را نشان میدهد. این مُهر، تعداد ثانیههای کامل سپریشده از نیمهشب به وقت UTC در ۱ ژانویهٔ ۱۹۷۰ را میشمارد؛ این لحظه «مبدأ یونیکس» نام دارد. این ابزار مُهر زمانی یونیکس را به تاریخ تقویمی و زمان ساعت تبدیل میکند و آن را در قالب ۲۴ساعته یا ۱۲ساعته نشان میدهد.
روش تبدیل مُهر زمانی یونیکس به تاریخ
فرمول پایه ساده است:
تاریخ = دوران یونیکس (1970-01-01، 00:00:00 به وقت UTC) + مُهر زمانی (برحسب ثانیه)
برای تبدیل تعداد خامی از ثانیهها به تاریخ، همان تعداد ثانیه را به ۱ ژانویهٔ ۱۹۷۰ اضافه میکنند. سپس نتیجه باید به سال، ماه، روز، ساعت، دقیقه و ثانیه تفکیک شود. بخش دشوار همین تفکیک است، زیرا باید سالهای کبیسه را که یک روز به فوریه اضافه میکنند و همچنین تفاوت طول ماهها را در نظر بگیرد. بیشتر زبانهای برنامهنویسی تابع داخلی تاریخ دارند که این کار را بهطور خودکار انجام میدهد؛ بنابراین لازم نیست کسی آن را گامبهگام محاسبه کند.
مثال حلشده
مُهر زمانی 1609459200 را در نظر بگیرید.
- بر تعداد ثانیههای یک روز تقسیم کنید: ۱٬۶۰۹٬۴۵۹٬۲۰۰ ÷ ۸۶٬۴۰۰ = ۱۸٬۶۲۸ روز.
- از ۱ ژانویهٔ ۱۹۷۰ بهسوی جلو ۱۸٬۶۲۸ روز بشمارید و سالهای کبیسه را نیز در این مسیر در نظر بگیرید.
- شمارش به ۱ ژانویهٔ ۲۰۲۱ میرسد.
بنابراین 1609459200 به جمعه، ۱ ژانویهٔ ۲۰۲۱، 00:00:00 به وقت UTC تبدیل میشود. روز هفته، یعنی جمعه، از همین شمارش روزها به دست میآید.
مبدل نتیجه را در منطقه زمانی گزارششده از سوی مرورگر شما نشان میدهد، نه به وقت UTC. خوانندهای در نیویورک همین مُهر زمانی را بهصورت پنجشنبه، ۳۱ دسامبر ۲۰۲۰، 19:00:00 میبیند، زیرا نیویورک در آن روز پنج ساعت از UTC عقبتر بود.
مُهر زمانی میتواند منفی هم باشد؛ در این حالت تاریخی پیش از ۱۹۷۰ را نشان میدهد. برای نمونه، -86400 دقیقاً یک روز پیش از دوران یونیکس است: ۳۱ دسامبر ۱۹۶۹، 00:00:00 به وقت UTC.
دقت مُهر زمانی: ثانیه، میلیثانیه و میکروثانیه
همه سیستمها زمان را برحسب ثانیه اندازهگیری نمیکنند. این مبدل تعداد رقمهای مُهر زمانی را بررسی و دقت آن را حدس میزند:
| رقمها | دقت | مثال |
|---|---|---|
| ۱۰ | ثانیه | 1609459200 |
| ۱۳ | میلیثانیه | 1609459200000 |
| ۱۶ | میکروثانیه | 1609459200000000 |
مُهر زمانی منفی بهدلیل علامت منفی یک نویسه اضافی دارد؛ بنابراین -1609459200 (۱۱ نویسه، ۱۰ رقم) همچنان برحسب ثانیه خوانده میشود. هر تعداد رقم دیگر، ثانیه معمولی در نظر گرفته میشود. مقادیر میلیثانیه و میکروثانیه، پیش از اعمال فرمول ثانیه بالا، بهترتیب بر ۱٬۰۰۰ یا ۱٬۰۰۰٬۰۰۰ تقسیم میشوند.
قالب زمانی ۱۲ساعته و ۲۴ساعته
مبدل دو روش برای نمایش زمان روز ارائه میدهد.
- قالب ۲۴ساعته ساعتها را از ۰ تا ۲۳ میشمارد و برچسب AM یا PM ندارد. برنامهنویسان گاهی آن را زمان نظامی مینامند. 3:00 بعدازظهر بهصورت 15:00 نوشته میشود.
- قالب ۱۲ساعته ساعتها را از ۱ تا ۱۲ میشمارد و برای فاصله نیمهشب تا ظهر از AM و برای فاصله ظهر تا نیمهشب از PM استفاده میکند. 15:00 در قالب ۲۴ساعته بهصورت 3:00 PM نوشته میشود.
قالب ۲۴ساعته در بیشتر کشورهای اروپا، آمریکای لاتین و آسیا، و در محیطهای علمی، نظامی و پزشکی در سراسر جهان استاندارد است. قالب ۱۲ساعته همچنان برای استفاده روزمره در ایالات متحده، کانادا و چند کشور انگلیسیزبان دیگر رایج است.
بازه تاریخهای پشتیبانیشده
این مبدل هر مُهر زمانی از -62135596800 تا 253402300799 را میپذیرد. این بازه همه تاریخها را از ۱ ژانویه سال ۱ تا ۳۱ دسامبر ۹۹۹۹ در تقویم میلادی پیشگسترشیافته پوشش میدهد؛ یعنی تقویم امروزی که به گذشته، پیش از زمان معرفی آن در ۱۵۸۲، تعمیم داده شده است. مُهرهای زمانی خارج از این بازه با خطای خارج از محدوده رد میشوند.
مشکل سال ۲۰۳۸
بسیاری از سیستمهای رایانهای قدیمی مُهر زمانی یونیکس را بهصورت عدد صحیح علامتدار ۳۲بیتی ذخیره میکنند که فقط میتواند تا ۲٬۱۴۷٬۴۸۳٬۶۴۷ را بشمارد. با گذشت این تعداد ثانیه از مبدأ یونیکس، زمان به ۱۹ ژانویهٔ ۲۰۳۸، ساعت 03:14:07 به وقت UTC، میرسد. پس از آن لحظه، یک سیستم ۳۲بیتیِ وصلهنشده سرریز میکند، به عددی منفی بازمیگردد و تاریخ را بهجای ۲۰۳۸ در ۱۹۰۱ میخواند. این مسئله به مشکل سال ۲۰۳۸ معروف است. این مشکل همه سیستمها را تحت تأثیر قرار نمیدهد: نرمافزارهای امروزی که مُهرهای زمانی را بهصورت اعداد ۶۴بیتی یا مانند جاوااسکریپت بهصورت اعداد معمولی ذخیره میکنند، میتوانند تاریخهایی هزاران سال پس از ۲۰۳۸ را بدون سرریز نمایش دهند.
کاربردهای رایج مُهرهای زمانی یونیکس
مُهرهای زمانی یونیکس در سراسر رایانش کاربرد دارند، زیرا فشردهاند و مقایسه یا مرتبسازی آنها آسان است:
- ردیفهای پایگاه داده از آنها برای ثبت زمان ایجاد یا آخرین تغییر یک رکورد استفاده میکنند.
- سرورهای وب از آنها در سرایندهای HTTP و کوکیها برای کنترل ذخیرهسازی موقت و انقضا استفاده میکنند.
- فایلهای گزارش هر رویداد را با یکی از آنها مُهرگذاری میکنند تا ورودیها بهترتیب قرار گیرند.
- گیت و دیگر سیستمهای کنترل نسخه زمان ثبت تغییرات را به این روش ثبت میکنند.
- واسطهای برنامهنویسی کاربردی وب از آنها برای مشخص کردن زمان تولید یا آخرین بهروزرسانی دادهها استفاده میکنند.
پرسشهای متداول
دوران یونیکس چیست؟ دوران یونیکس نیمهشب به وقت UTC در ۱ ژانویهٔ ۱۹۷۰ است. این نقطه صفر، مبدأ شمارش همه مُهرهای زمانی یونیکس است.
آیا مُهر زمانی یونیکس ثانیههای کبیسه را شامل میشود؟ خیر. زمان یونیکس در هر روز دقیقاً ۸۶٬۴۰۰ ثانیه را میشمارد و ثانیههای کبیسهای را که گاهی به UTC افزوده میشوند نادیده میگیرد؛ بنابراین اندکی از زمان نجومی عقب یا جلو میافتد.
آیا مُهر زمانی یونیکس میتواند منفی باشد؟ بله. مقدار منفی تاریخی پیش از ۱ ژانویهٔ ۱۹۷۰ را نشان میدهد.
چرا مُهر زمانی من ۱۳ رقم دارد، نه ۱۰ رقم؟
مُهر زمانی ۱۳رقمی برحسب میلیثانیه، نه ثانیه، اندازهگیری میشود. Date.now() جاوااسکریپت و بسیاری از واسطهای برنامهنویسی کاربردی وب، مُهرهای زمانی را برحسب میلیثانیه برمیگردانند؛ به همین دلیل مقادیر ۱۳رقمی در توسعه وب رایجاند.
آیا مُهر زمانی یونیکس در همه مناطق زمانی یکسان است؟ خود عدد به هیچ منطقه زمانی وابسته نیست. این عدد همیشه تعداد ثانیههای سپریشده از دوران یونیکس را به وقت UTC میشمارد. تبدیل آن به تاریخ و زمان محلی به معنای افزودن اختلاف زمانی آن منطقه است؛ به همین دلیل خروجی این مبدل از منطقه زمانی دستگاهی که روی آن اجرا میشود پیروی میکند.
بزرگترین تاریخی که این مبدل میتواند پردازش کند چیست؟ ۳۱ دسامبر ۹۹۹۹، ساعت 23:59:59 به وقت UTC، که مُهر زمانی آن ۲۵۳۴۰۲۳۰۰۷۹۹ است. قدیمیترین تاریخ ۱ ژانویه سال ۱، ساعت 00:00:00 به وقت UTC، است که مُهر زمانی آن -۶۲۱۳۵۵۹۶۸۰۰ است.