تبدیل میلیثانیه به تاریخ
یک تایماستمپ یونیکس بر حسب میلیثانیه را به تاریخ بخوانید، با کسر زیر ثانیه که در سطر 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.
تبدیلهای مرتبط
برای مقداری دهرقمی تبدیل تایماستمپ به تاریخ هست و برای جهت مخالف تبدیل تاریخ به تایماستمپ که برای تاریخی که انتخاب میکنید هم ثانیه و هم میلیثانیه را برمیگرداند. تایماستمپ یونیکس فعلی همان شمارنده زنده در نوار بالای ابزار است، و تایماستمپ دیسکورد به شکل ثانیه نیاز دارد، که یکی از دلایل رایج تبدیل به پایین است.