توسعه‌دهنده 🔒 در مرورگر اجرا می‌شود — داده‌ای ارسال نمی‌شود

تبدیل تایم‌استمپ به تاریخ

یک تایم‌استمپ یونیکس را در هر منطقه زمانی به تاریخ خوانا تبدیل کنید، با شکل UTC و ISO 8601 در کنارش.

تایم‌استمپ یونیکس فعلی:
تایم‌استمپ ← تاریخ
تاریخ ← تایم‌استمپ

در هر خط یک تایم‌استمپ یا تاریخ، تا ۵۰۰ خط.

تبدیل تایم‌استمپ یونیکس به تاریخ خوانا

تایم‌استمپ یونیکس تعداد ثانیه‌های گذشته از اول ژانویه ۱۹۷۰ ساعت ۰۰:۰۰:۰۰ به وقت UTC است. لاگ‌ها، APIها، پایگاه‌های داده و فیلدهای JWT زمان را همین‌طور ذخیره می‌کنند، چون یک عدد صحیح هیچ ابهامی ندارد: یک لحظه را نام می‌برد، نه خوانش محلی ساعت را. هزینه‌اش این است که هیچ‌کس نمی‌تواند آن را با یک نگاه بخواند. این صفحه مبدل تایم‌استمپ را برای همین کار باز می‌کند: عدد را بچسبانید، تاریخ را بخوانید.

نتیجه هم‌زمان در چهار سطر می‌آید. سطر اول همان لحظه در منطقه زمانی انتخاب‌شده است، سطر دوم به وقت <abbr title="Coordinated Universal Time">UTC، سطر سوم شکل ISO 8601 که بیشتر APIها همان را پس می‌خواهند و سطر چهارم فاصله از حالا به زبان ساده. همه‌چیز در مرورگر شما محاسبه می‌شود و عدد از صفحه بیرون نمی‌رود.

نمودار: زمان یونیکس روی یک خط، از ۰ (۱ ژانویه‌ی ۱۹۷۰) تا ۲٬۱۴۷٬۴۸۳٬۶۴۷ یعنی سقف عدد صحیح ۳۲ بیتی در ۱۹ ژانویه‌ی ۲۰۳۸.ثانیه‌های گذشته از ۱ ژانویه‌ی ۱۹۷۰، ساعت ۰۰:۰۰:۰۰ UTC01970-01-0100:00:00 UTCمبدأ زمان یونیکس10000000002001-09-0901:46:40 UTCیک میلیارد ثانیه17000000002023-11-1422:13:20 UTC21474836472038-01-1903:14:07 UTCسقف عدد ۳۲ بیتی
تایم‌استمپ یونیکس فقط تعداد ثانیه‌هایی است که از مبدأ گذشته، و همیشه به وقت UTC است. منطقه‌ی زمانی فقط وقتی مهم است که عدد را به تاریخ محلی تبدیل می‌کنید. سیستم‌هایی که آن را در عدد صحیح ۳۲ بیتی علامت‌دار نگه می‌دارند، در ۱۹ ژانویه‌ی ۲۰۳۸ سرریز می‌شوند.

ثانیه، میلی‌ثانیه و رقم‌هایی که آن‌ها را از هم جدا می‌کنند

یک لحظه ثابت بسته به واحد با تعداد رقم متفاوتی نوشته می‌شود و اشتباه خواندن واحد، تاریخ را دهه‌ها جابه‌جا می‌کند. مبدل از تعداد رقم‌ها حدس می‌زند و می‌نویسد چه فرضی کرده است؛ منوی واحد وقتی داده‌تان غیرمعمول باشد این حدس را کنار می‌زند.

واحدهمان لحظه به این شکلتعداد رقماز کجا می‌آید
ثانیه1735689600۱۰ابزارهای یونیکس، time() در PHP، فیلدهای JWT
میلی‌ثانیه1735689600000۱۳Date.now() در جاوااسکریپت، جاوا، MongoDB
میکروثانیه1735689600000000۱۶PostgreSQL، در پایتون time.time_ns() تقسیم بر ۱۰۰۰
نانوثانیه1735689600000000000۱۹Go، Prometheus، لاگ‌های با دقت بالا

عدد ده‌رقمی تا ۲۰ نوامبر ۲۲۸۶ ده‌رقمی می‌ماند، پس شمردن رقم‌ها برای هر تاریخی در این قرن آزمون مطمئنی است. عددهای منفی تاریخ‌های پیش از ۱۹۷۰ هستند و مثل بقیه تبدیل می‌شوند.

منطقه زمانی یک انتخاب نمایشی است، نه بخشی از عدد

تایم‌استمپ منطقه زمانی ندارد. وقتی همکارتان می‌گوید یک سطر لاگ یک ساعت جابه‌جاست، تایم‌استمپ‌ها معمولاً یکی هستند و فقط نمایش تفاوت دارد. منطقه را از بالای ابزار عوض کنید و همان عدد ساعت محلی دیگری می‌سازد، در حالی که UTC و ISO 8601 سر جایشان می‌مانند — راه سریعی برای اینکه ثابت کنید کدام طرف گفت‌وگو به ساعت دیگری نگاه می‌کند.

ساعت تابستانی را پایگاه داده منطقه‌های زمانی خودش مدیریت می‌کند، پس تاریخی تابستانی در Europe/Berlin با UTC+02:00 و تاریخی زمستانی با UTC+01:00 نمایش داده می‌شود، بدون آنکه کاری بکنید.

تبدیل در کد

زبانه کد زیر مبدل، تبدیل همان تایم‌استمپ روی صفحه را در JavaScript، Python، PHP، SQL، Go، Java، C# و Bash چاپ می‌کند تا بتوانید آن را مستقیم به همان جایی ببرید که عدد از آن آمده است. دو دام ارزش یادسپاری دارند: new Date() در جاوااسکریپت میلی‌ثانیه می‌خواهد، پس تایم‌استمپ ده‌رقمی باید در ۱۰۰۰ ضرب شود، و نتیجه FROM_UNIXTIME() در MySQL به منطقه زمانی سرور نمایش داده می‌شود، نه به UTC.

مسیر برعکس

پنجره روبه‌رو کار برعکس را انجام می‌دهد: تاریخ و ساعت را انتخاب می‌کنید و تایم‌استمپ را بر حسب ثانیه و میلی‌ثانیه می‌گیرید. برای آن جهت هم صفحه‌ای هست — تبدیل تاریخ به تایم‌استمپ — و یکی هم به‌طور خاص برای میلی‌ثانیه. اگر عدد از یک پیام دیسکورد آمده، تایم‌استمپ دیسکورد کدهای <t:…> را توضیح می‌دهد و برایتان می‌سازد.

آموزش‌های مرتبط