Unix Timestamp چیست؟
زمان یونیکس (Unix Time) که به نامهای POSIX time یا Epoch time نیز شناخته میشود، سیستمی برای توصیف یک لحظه از زمان است. این عدد نشاندهنده تعداد ثانیههایی است که از ساعت ۰۰:۰۰:۰۰ روز ۱ ژانویه ۱۹۷۰ (به وقت گرینویچ UTC) گذشته است. این سیستم به دلیل سادگی (یک عدد صحیح) در سیستمعاملهای یونیکس و لینوکس و پایگاههای داده محبوب شد و امروزه استاندارد اصلی ذخیره زمان در کامپیوترهاست.
نحوه دریافت Timestamp در زبانهای مختلف
JavaScript / TypeScript
const now = Math.floor(Date.now() / 1000);Python
import time
timestamp = int(time.time())PHP
$timestamp = time();مشکل سال ۲۰۳۸ (Y2K38)
بسیاری از سیستمهای قدیمی زمان یونیکس را در یک متغیر ۳۲ بیتی علامتدار (Signed 32-bit Integer) ذخیره میکنند. بزرگترین عددی که این متغیر میتواند نگه دارد 2,147,483,647 است. این عدد دقیقاً معادل ساعت ۰۳:۱۴:۰۷ روز ۱۹ ژانویه ۲۰۳۸ است.
خطر: پس از این لحظه، شمارنده در سیستمهای ۳۲ بیتی "سرریز" کرده و به سال ۱۹۰۱ برمیگردد که باعث اختلال گسترده در نرمافزارها خواهد شد. راه حل، استفاده از سیستمهای ۶۴ بیتی است.
سوالات متداول
آیا ثانیههای کبیسه (Leap Seconds) در Timestamp حساب میشوند؟
خیر، زمان یونیکس ثانیههای کبیسه را نادیده میگیرد. به همین دلیل کاملاً دقیق با زمان اتمی هماهنگ نیست، اما برای اکثر کاربردهای کامپیوتری کافی است.
چرا برخی اعداد Timestamp سیزده رقمی هستند؟
در زبانهایی مثل جاوا و جاوا اسکریپت، زمان بر حسب "میلیثانیه" محاسبه میشود. برای تبدیل آن به زمان یونیکس استاندارد (ثانیه)، باید آن را بر ۱۰۰۰ تقسیم کنید.
