محاسبه تعداد روز بین دو تاریخ (و کی واقعاً اهمیت دارد)
چه برای ردیابی یک موعد مقررشده، شمارش معکوس تا تعطیلات، یا فهمیدن چقدر پیش از این اتفاقی افتاده است — محاسبه تعداد روز بین دو تاریخ یکی از آن کارهایی است که ساده به نظر میرسد اما مدام مردم را سردرگم میکند.
این نوشتار نحوه کار، اشتباهات رایج، و زمانهایی را که اهمیت بیشتری دارند توضیح میدهد.
فرمول پایهای
در هسته خود، محاسبه یک تفریق است:
روزهای بین = تاریخ پایان − تاریخ شروع
اما تاریخها اعداد نیستند. آنها دارای ماههایی با طولهای مختلف، سالهای کبیسه، و مناطق زمانی هستند. اینجاست که کار پیچیده میشود.
یک ابزار قابل اعتماد همه اینها را برایتان حل میکند — اما درک اینکه پشت پرده چه اتفاقی میافتد کمک میکند تا آن را درست استفاده کنید.
موارد استفاده رایج
موعدهای مقررشده پروژه
میدانید که پروژه تا ۳۱ اسفند باید تکمیل شود. امروز ۲۳ بهمن است. چند روز کاری دارید؟ تعداد روزهای خام ۳۷ روز است، اما اگر آخر هفتهها را حذف کنید تا ۲۶ روز میماند. دانستن این تفاوت اهمیت دارد.
سن و سالگردها
"ما ۱۰۰۰ روز باز هستیم" بهتر از "حدود دو سال و نه ماه" به نظر میرسد. شمارش روز، سنگهای راهی را به چیزی ملموس تبدیل میکند.
محاسبات حقوقی و مالی
سود وام هر روز محاسبه میشود. قراردادهای اجاره تعداد روزهای دقیقی را مشخص میکنند. جریمههای تاخیر در روزی خاص اعمال میشوند. در این موارد، یک روز اختلاف عواقب واقعی دارد.
پیگیری سلامت و ورزش
چند روز است که یک عادت جدید شروع کردید؟ تا بازدید بعدی چقدر باقی مانده؟ دقت باعث میشود سیاقها صادق باشند.
اشتباهاتی که مردم انجام میدهند
شمارش روز شروع
اگر دوشنبه شروع کنید و چهارشنبه تمام کنید، این ۲ روز است یا ۳ روز؟
- شمارش انحصاری (دوشنبه تا چهارشنبه = ۲): برای مدتهایی مثل "سفر چند روز طول کشید" استفاده میشود
- شمارش شامل (دوشنبه تا چهارشنبه = ۳): وقتی هر روز در محدوده اهمیت دارد، مثل قرارداد اجاره
یک ماشینحساب روزهای بین باید بگوید کدام روش را استفاده میکند.
نادیده گرفتن سالهای کبیسه
فوریه ۲۹ تقریباً هر ۴ سال یکبار وجود دارد. اگر محاسبه شما از فوریه یک سال کبیسه عبور کند، میتواند یک روز اختلاف داشته باشید اگر ابزار آن را منظور نکند.
اشتباه در ترتیب ماهها
۱ فروردین تا ۱ اردیبهشت ۳۱ روز است. ۱ اردیبهشت تا ۱ فروردین (سال قبل) ۳۶۵ روز است. ترتیب تاریخ اهمیت دارد — وارد کردن پایان قبل از شروع نتیجه منفی میدهد (یا خطا، بسته به ابزار).
مناطق زمانی
اگر در طول نیمهشب یا بین مناطق مختلف محاسبه کنید، "تاریخ" خود میتواند تغییر کند. ۳۰ اسفند ساعت ۲۳ در نیویورک در لندن از قبل ۱ فروردین است. برای بیشتر استفادههای روزمره اهمیتی ندارد — اما برای هر چیز سمت سرور یا هماهنگی جهانی، اهمیت دارد.
نحوه واقعی محاسبه
بیشتر پیادهسازیها از یکی از دو روش استفاده میکنند:
تفاوت شماره روز ژولیانی — هر تاریخ تقویمی به یک عدد صحیح پیوسته (شماره روز ژولیانی) تبدیل میشود. تفاوت بین دو شماره روز ژولیانی تعداد دقیق روزها را میدهد. بدون حلقه، بدون شمارش ماهها جداگانه.
میلیثانیههای Epoch — تاریخها به میلیثانیهای از ۱ ژانویه ۱۹۷۰ (Unix epoch) تبدیل میشوند. تفاوت بر ۸۶٬۴۰۰٬۰۰۰ (میلیثانیه در هر روز) تقسیم میشود. این همان چیزی است که شی Date جاوااسکریپت داخلاً انجام میدهد.
هر دو نتیجه یکسانی برای تاریخهای گذشته و آینده میدهند. روش Epoch همان چیزی است که بیشتر ابزارهای آنلاین و زبانهای برنامهنویسی استفاده میکنند.
مرجع سریع
| سناریو | روز |
|---|---|
| ۱ سال (غیرکبیسه) | ۳۶۵ |
| ۱ سال (کبیسه) | ۳۶۶ |
| ۱ ماه (میانگین) | ~۳۰٫۴۴ |
| فوریه (غیرکبیسه) | ۲۸ |
| فوریه (کبیسه) | ۲۹ |
| ۱ هفته | ۷ |
کی از ماشینحساب استفاده کنید در برابر محاسبه ذهنی
محاسبه ذهنی برای برآورد تقریبی خوب است — "حدود ۳ ماه" یا "تقریباً ۶ هفته." اما برای یک ماشینحساب به سراغ بروید:
- تعداد دقیق نتیجه را تغییر میدهد (قراردادها، موعدها، هزینهها)
- از مرزهای ماه یا سال عبور میکنید
- نیاز دارید آخر هفتهها یا تعطیلات را حذف کنید
- عدد را به کسی میگویید که بر اساس آن اقدام خواهد کرد
ابزار روزهای بین تاریخها تعداد روزهای دقیق بین هر دو تاریخ را محاسبه میکند و به طور خودکار سالهای کبیسه و طول ماهها را مدیریت میکند.
خلاصه
محاسبه روزهای بین تاریخها ساده است زمانی که موارد خاص را میشناسید: شمارش شامل در برابر انحصاری، سالهای کبیسه، و مناطق زمانی. برای استفاده روزمره، یک ماشینحساب ساده تعداد دقیق را فوری میدهد. برای قراردادها، امور مالی، یا برنامهریزی موعد — دقت مهم است.


