روزهای بین دو تاریخ با شمردن هر دو سر
تفریق یک تاریخ از دیگری تعداد شبها را میدهد، نه تعداد روزها: ۱ ژوئن تا ۳۰ ژوئن ۲۹ است. شمردن هر دو سر ۳۰ میدهد، که همان چیزی است که رزرو مرخصی، قرارداد اجاره یا صورتحساب هتل از سی روز میفهمد. «تاریخ پایان را بهعنوان یک روز بشمار» را روشن کنید تا هر رقم صفحه، از جمله شمارش روزهای کاری، با آن تغییر کند.
تفکیک بر اساس دوره
| ۱۴۰۵ خرداد | ۳۰ | ۲۲ | ۸ |
نتیجهها بدون تضمین درستی ارائه میشوند. روش و منابع در پایین صفحه منتشر شدهاند تا بتوانید محاسبه را بررسی کنید.
بازه به دورهها تقسیم شده است. نوار کوتاهتر آن چیزی است که پس از کنار گذاشتن آخر هفتهها و تعطیلاتی که فهرست کردهاید باقی میماند.
تفریق تاریخها فاصلهٔ بین روزها را میشمارد؛ شمردن هر دو سر خود روزها را. این دو دقیقاً یکی با هم فرق دارند.
کرایهٔ ماشین، اقامت در هتل و مرخصی سالانه تقریباً همیشه هر دو سر را میشمارند. بهره، مهلتهای اخطار و ضربالاجلها تقریباً هیچوقت.
ژوئن ۲۰۲۶ از دوشنبه شروع میشود، بنابراین شمردن هر دو سر ۳۰ روز میدهد: ۲۲ روز کاری و ۸ روز آخر هفته.
چگونگی کار
فرمول
هر تاریخ به شمارهٔ روز تبدیل میشود: تعداد روزهای کامل از ۱۹۷۰-۰۱-۰۱
در گاهشماری میلادی امتدادی، بدون ساعت یا منطقهٔ زمانی.
n = daysFromCivil(year, month, day)
days = n(end) - n(start)، و اگر تاریخ پایان شمرده شود یک واحد بیشتر
بازه بهصورت نیمهباز [start, end) است.
روز هفته با ۰ = یکشنبه:
w = ((n mod 7) + 4 + 7) mod 7
روزهای کاری در N روز از روز هفتهٔ w۰:
whole = floor(N / 7)
left = N - 7 x whole
working = whole x (7 - weekendDays)
+ روزهای کاری بخش باقیمانده
- تعطیلات ثبتشدهای که در روز کاری افتادهاند
برای اختلاف تقویمی، addMonths تاریخ را به پایان ماه مقصد محدود میکند:
m = بزرگترین k که addMonths(start, k) <= end
days = n(end) - n(addMonths(start, m))
years = floor(m / 12)
months = m mod 12
فرضها
- تاریخها روزهایی روی تقویم در نظر گرفته میشوند، نه لحظههایی در زمان. هیچ ساعتی از روز در هیچجای حساب نیست، بنابراین هیچ منطقهٔ زمانیای اعمال نمیشود و پاسخ در اوکلند همان است که در انکوریج.
- چون ساعتی در کار نیست، تغییر ساعت تابستانی نمیتواند بر شمارش اثر بگذارد. بازهای که از تغییر ساعت مارس در Europe/London میگذرد ۲۳ ساعت کمتر از یک تعداد صحیح روزِ ۲۴ ساعته است، و تقسیم میلیثانیههای سپریشده بر ۸۶٬۴۰۰٬۰۰۰ یک روز کمتر از آنچه تقویم نشان میدهد گزارش میکند.
- بهطور پیشفرض، تاریخ پایان بهجای روز شمارششده، خط پایان است، بنابراین از ۱ ژوئن تا ۳۰ ژوئن ۲۹ است. روشن کردن «تاریخ پایان را بهعنوان یک روز بشمار» آن را ۳۰ میکند و هر رقم صفحه با هم تغییر میکند.
- ترتیب دو تاریخ مهم نیست. ابزار فاصلهٔ بین آنها را گزارش میکند و هرگز عدد منفی نمیدهد.
- ماههای کامل با جمعِ محدودشده به پایان ماه شمرده میشوند، بنابراین ۳۱ ژانویه تا ۲۸ فوریه یک ماه کامل و ۳۱ ژانویه تا ۱ مارس یک ماه و یک روز است. حساب ماه به این شکل برگشتپذیر نیست — یک ماه جلو و سپس یک ماه عقب از ۳۱ ژانویه به ۲۸ ژانویه میرسد.
- تعطیلیای که به آخر هفته میافتد کسر نمیشود، چون روزی نبود که کار شود. دقیقاً به همین دلیل بریتانیا وقتی ۲۶ دسامبر شنبه است، Boxing Day را دوشنبه برگزار میکند، و به همین دلیل فهرست پیشفرض تاریخ جایگزین را دارد.
- هر خطی در کادر تعطیلات که تاریخ ندارد نادیده گرفته میشود، نه رد، چون نمایش خطا، درست وقتی کسی در میانهٔ چسباندن یک فهرست است، صفحه را خالی میکند. رقم «تعطیلات کسرشده» راه بررسی آن است، چون خطهایی را میشمارد که واقعاً اعمال شدهاند.
- تقویم سراسر میلادیِ امتدادی (پرولپتیک) است، حتی برای تاریخهای پیش از پذیرش آن. بریتانیا در سپتامبر ۱۷۵۲ به آن تغییر داد و یازده روز را حذف کرد، بنابراین بازهای که از آن ماه میگذرد یک شمارش روز است، نه آنچه یک دفتر خاطرات آن زمان میگفت.
پرسشهای رایج
حقوق و دستمزد و بهره از کدام قرارداد پیروی میکنند؟
تقریباً همیشه شمارش انحصاری — یعنی تفاوت بین دو تاریخ، بدون شمردن هیچکدام دو بار. وامی از ۱ مارس تا ۱ آوریل ۳۱ روز بهره میگیرد، نه ۳۲ روز. شمارش شامل (هر دو سر) برای چیزهایی است که با روزهای کامل حضور سنجیده میشوند: شبهای هتل، حقوق مرخصی، مهلتهای اخطار.
اگر تاریخها در ماههای مختلف باشند پاسخ تغییر میکند؟
نه. شمارش روی شمارههای روز انجام میشود، نه با ورق زدن تقویم، بنابراین طول ماهها، روزهای کبیسه و مرزهای ماه همه یکسان رفتار میشوند. ۲۸ فوریه تا ۱ مارس در سال عادی یک روز و در سال کبیسه دو روز است و این تنها تفاوتی است که پیش میآید.
منابع
روش را Tessalor در ۸ مرداد ۱۴۰۵ نوشته و بررسی کرده است.
روش کامل، مثال محاسبهشده و همهٔ فرضهای این نتیجه در این صفحه آمده است: ماشینحساب تفاوت تاریخ.