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

تبدیل میلی‌ثانیه به تاریخ

یک تایم‌استمپ یونیکس بر حسب میلی‌ثانیه را به تاریخ بخوانید، با کسر زیر ثانیه که در سطر ISO 8601 حفظ می‌شود.

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

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

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

بیشتر مقدارهای زمانی که یک برنامه‌نویس فرانت‌اند می‌بیند بر حسب میلی‌ثانیه‌اند، چون زبان همین را به او می‌دهد: Date.now() میلی‌ثانیه می‌شمارد، نه ثانیه. بعد هر چه در ادامه مسیر است، از خط لوله لاگ تا ستون پایگاه داده، باید بر سر واحد توافق کند. این صفحه مبدل تایم‌استمپ را با منوی واحد روی میلی‌ثانیه باز می‌کند تا یک عدد سیزده‌رقمی همان لحظه که می‌چسبانید درست خوانده شود.

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

سیزده رقم، و جایی که شمردن رقم‌ها کافی نیست

تشخیص خودکار از تعداد رقم‌ها کار می‌کند و برای هر تاریخی در این قرن درست است، اما واحد ویژگی سامانه‌ای است که عدد را ساخته، نه ویژگی خود عدد. منوی واحد را تثبیت کنید و حدس از میان می‌رود. بهای اشتباه هم پنهان نیست، چون هر پله بین واحدها تاریخ را سه مرتبه بزرگی جابه‌جا می‌کند.

واحد انتخاب‌شده برای 1735689600000تاریخی که می‌سازدحکم
ثانیه۲۵ اکتبر ۵۶۹۷۱هزار برابر، در جهت اشتباه
میلی‌ثانیهاول ژانویه ۲۰۲۵ ساعت ۰۰:۰۰:۰۰ به وقت UTCمعنای واقعی عدد
میکروثانیه۲۱ ژانویه ۱۹۷۰ ساعت ۰۲:۰۸:۰۹ به وقت UTCتاریخ نزدیک به ۱۹۷۰ نشانه کلاسیک همین است
نانوثانیهاول ژانویه ۱۹۷۰ ساعت ۰۰:۲۸:۵۵ به وقت UTCتقریباً خود مبدأ

پس تاریخی در روزهای آغازین ۱۹۷۰ یا تاریخی در ده‌ها هزار سال آینده تقریباً هرگز داده خراب نیست. همان عدد صحیح است که زیر واحد اشتباه خوانده شده، و راه‌حل منو است نه عدد.

تایم‌استمپ میلی‌ثانیه‌ای از کجا می‌آید

  • جاوااسکریپت: Date.now() و new Date().getTime() هر دو میلی‌ثانیه برمی‌گردانند و new Date(n) هم همان را می‌خواهد؛ برای همین است که یک مقدار ده‌رقمی اول باید در ۱۰۰۰ ضرب شود.
  • جاوا: System.currentTimeMillis() و Instant.toEpochMilli().
  • MongoDB: نوع تاریخ در BSON شمارشی علامت‌دار ۶۴ بیتی از میلی‌ثانیه‌های گذشته از مبدأ است.
  • Kafka، Elasticsearch و بیشتر قالب‌های لاگ JSON که واحد را از زبان‌هایی به ارث برده‌اند که در آن‌ها می‌نویسند.

پایگاه‌های داده و ابزارهای یونیکس به سمت دیگر تمایل دارند و ثانیه می‌شمارند، پس مرز میان یک سرویس جاوااسکریپتی و یک ستون SQL درست همان جایی است که ضریب ۱۰۰۰ گم می‌شود. تبدیل یک مقدار مشکوک همین‌جا و خواندن تاریخش سریع‌ترین راه دیدن این است که کدام طرف آن را انداخته.

گرد کردن، و تبدیل بیش از یکی

رفتن از میلی‌ثانیه به ثانیه یک برش است، پس آن را در یک جا و در یک جهت انجام دهید. مخلوط کردن حذف اعشار در یک سرویس با گرد کردن در سرویس دیگر اختلاف‌های یک‌ثانیه‌ای می‌سازد که فقط وقتی دو رویداد در یک ثانیه می‌افتند خودشان را نشان می‌دهند. زبانه دسته‌ای زیر مبدل هم همین قاعده را دنبال می‌کند: تا ۵۰۰ سطر بچسبانید و هر سطر یک ستون ثانیه با کسر حذف‌شده می‌گیرد، در کنار ستون ISO 8601 که آن را حفظ می‌کند، آماده برای کپی به‌صورت CSV.

تبدیل‌های مرتبط

برای مقداری ده‌رقمی تبدیل تایم‌استمپ به تاریخ هست و برای جهت مخالف تبدیل تاریخ به تایم‌استمپ که برای تاریخی که انتخاب می‌کنید هم ثانیه و هم میلی‌ثانیه را برمی‌گرداند. تایم‌استمپ یونیکس فعلی همان شمارنده زنده در نوار بالای ابزار است، و تایم‌استمپ دیسکورد به شکل ثانیه نیاز دارد، که یکی از دلایل رایج تبدیل به پایین است.

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