اگر شما یک برنامهنویس وب یا موبایل باشید، حتماً با اعدادی مثل 1699999999 در کدهای خود یا در پاسخهای API (مثل JSON) روبهرو شدهاید. این اعداد عجیب، چیزی نیستند جز Timestamp یا همان زمان یونیکس. در این مقاله به زبان ساده توضیح میدهیم که Timestamp چیست، چرا استفاده میشود و چطور آن را به تاریخ قابل فهم تبدیل کنیم.
میخواهید یک Timestamp را تبدیل کنید؟
ابزار رایگان ما به شما امکان میدهد Timestamp را به تاریخ شمسی و میلادی (و برعکس) تبدیل کنید.
مبدل Timestamp آنلاینTimestamp (زمان یونیکس) دقیقاً چیست؟
کامپیوترها برای ذخیره زمان، از تاریخهایی مثل «۲۵ آبان ۱۴۰۳» استفاده نمیکنند. در عوض، آنها یک نقطه شروع مشخص (مبدأ) دارند و زمان را بر اساس تعداد ثانیههایی که از آن نقطه گذشته محاسبه میکنند.
مبدأ زمانی در سیستمهای کامپیوتری، ساعت ۰۰:۰۰:۰۰ روز ۱ ژانویه ۱۹۷۰ میلادی (معادل ۱۱ دی ۱۳۴۸ شمسی) به وقت جهانی (UTC) است.
بنابراین، اگر Timestamp عدد 1700000000 باشد، یعنی ۱,۷۰۰,۰۰۰,۰۰۰ ثانیه از اول ژانویه ۱۹۷۰ گذشته است.
چرا برنامهنویسان از Timestamp استفاده میکنند؟
شاید بپرسید چرا یک تاریخ معمولی (مثلاً YYYY-MM-DD) ذخیره نمیکنند؟ دلایل بسیار مهمی وجود دارد:
- مستقل از منطقه زمانی (Timezone): تاریخهای معمولی به منطقه زمانی وابستهاند. اگر کاربری در ایران تاریخ
2024-01-01 10:00را ثبت کند و کاربر دیگری در آمریکا به آن نگاه کند، ممکن است ساعت متفاوتی ببیند. اما Timestamp یک عدد جهانی است و در هر جای دنیا یکسان محاسبه میشود. - ذخیرهسازی بهینه: ذخیره یک عدد صحیح (Integer) در دیتابیس بسیار سریعتر و سبکتر از ذخیره متن تاریخ است.
- مقایسه و محاسبه آسان: برای فهمیدن اختلاف بین دو زمان، کافیست دو Timestamp را از هم کم کنید.
ثانیه (۱۰ رقمی) در مقابل میلیثانیه (۱۳ رقمی)
یک نکته بسیار مهم که گاهی باعث خطا در برنامهها میشود، تفاوت بین Timestamp ثانیهای و میلیثانیهای است:
- ثانیهای (Unix 10): مثل
1700000000. در سیستمهای لینوکس، PHP و پایتون رایج است. - میلیثانیهای (Unix 13): مثل
1700000000000. در جاوااسکریپت (JavaScript)، موتورهای بازی و اپلیکیشنهای موبایل رایج است.
اگر یک عدد ۱۳ رقمی را وارد سیستم کردید و تاریخ غیرمنطقی (مثلاً سال ۵۶۰۰۰) دیدید، احتمالاً سیستم شما میلیثانیه را به عنوان ثانیه تفسیر کرده است!
تبدیل Timestamp در زبانهای برنامهنویسی
برای گرفتن Timestamp فعلی یا تبدیل آن، هر زبانی توابع خاص خودش را دارد:
جاوااسکریپت (JavaScript)
// گرفتن زمان فعلی به میلیثانیه
let now = Date.now();
// تبدیل Timestamp به تاریخ
let date = new Date(1700000000000);
پایتون (Python)
import time
from datetime import datetime
# زمان فعلی
now = time.time()
# تبدیل Timestamp به تاریخ
dt = datetime.fromtimestamp(1700000000)
PHP
$now = time();
$date = date("Y-m-d H:i:s", 1700000000);
مشکل معروف: سال ۲۰۳۸ (Year 2038 Problem)
یک نکته فنی جالب: بسیاری از سیستمهای قدیمی از یک عدد صحیح ۳۲ بیتی علامتدار (Signed 32-bit) برای ذخیره Timestamp استفاده میکنند. این عدد حداکثر میتواند عدد 2,147,483,647 را در خود جای دهد.
این یعنی در تاریخ ۱۹ ژانویه ۲۰۳۸ ساعت ۰۳:۱۴:۰۷، این سیستمها سرریز (Overflow) کرده و تاریخ را به سال ۱۹۰۱ برمیگردانند! امروزه با روی آمدن سیستمهای ۶۴ بیتی این مشکل حل شده، اما برای سیستمهای قدیمی (که هنوز در برخی صنایع استفاده میشوند) یک هشدار جدی است.
Timestamp خود را همین الان تبدیل کنید
ابزار ما هم ثانیه و هم میلیثانیه را پشتیبانی میکند و تاریخ را به شمسی و میلادی نشان میدهد.
ورود به مبدل Timestampجمعبندی
Timestamp یک مفهوم بنیادین در برنامهنویسی است که به سیستمها اجازه میدهد زمان را در هر جای دنیا و بدون تداخل منطقه زمانی ذخیره کنند. اگر با APIها، دیتابیسها یا لاگهای سرور کار میکنید، درک درست این مفهوم میتواند ساعتها وقت شما را در دیباگ کردن (Debug) ذخیره کند.