روزهای بین دو تاریخ
حساب کنید دو تاریخ چقدر از هم فاصله دارند — به روز، هفته، ماه کامل و سال — و اینکه پس از کنار گذاشتن آخر هفتهها و تعطیلات رسمی، واقعاً چند روز از آنها کار میشود. بازه دوره به دوره تفکیک میشود و جدول بهصورت صفحهگسترده دانلود میشود.
تفکیک بر اساس دوره
| ۱۴۰۴ دی | ۳۱ | ۲۱ | ۱۰ |
| ۱۴۰۴ بهمن | ۲۸ | ۲۰ | ۸ |
| ۱۴۰۴ اسفند | ۳۱ | ۲۲ | ۹ |
| ۱۴۰۵ فروردین | ۳۰ | ۲۰ | ۱۰ |
| ۱۴۰۵ اردیبهشت | ۳۱ | ۱۹ | ۱۲ |
| ۱۴۰۵ خرداد | ۳۰ | ۲۲ | ۸ |
| ۱۴۰۵ تیر | ۳۱ | ۲۳ | ۸ |
| ۱۴۰۵ مرداد | ۳۱ | ۲۰ | ۱۱ |
| ۱۴۰۵ شهریور | ۳۰ | ۲۲ | ۸ |
| ۱۴۰۵ مهر | ۳۱ | ۲۲ | ۹ |
| ۱۴۰۵ آبان | ۳۰ | ۲۱ | ۹ |
| ۱۴۰۵ آذر | ۲۴ | ۱۸ | ۶ |
نتیجهها بدون تضمین درستی ارائه میشوند. روش و منابع در پایین صفحه منتشر شدهاند تا بتوانید محاسبه را بررسی کنید.
بازه به دورهها تقسیم شده است. نوار کوتاهتر آن چیزی است که پس از کنار گذاشتن آخر هفتهها و تعطیلاتی که فهرست کردهاید باقی میماند.
چگونگی کار
این ابزار چه چیزی را محاسبه میکند
دو پرسش درون «این تاریخها چقدر از هم فاصله دارند» پنهان است. اولی این است که چند روز بین آنهاست، که پیشپاافتاده به نظر میرسد تا وقتی متوجه شوید سالهای کبیسه، قاعدهٔ قرنها و دو تغییر ساعت در سال همه بین پاسخ و یک تفریق سادهانگارانه نشستهاند. دومی این است که چند روز از آنها واقعاً کار میشود، که عددی است که برنامهٔ پروژه، مهلت اخطار یا تخمین تحویل به آن وابسته است.
این ماشینحساب هر دو را یکجا پاسخ میدهد و محاسبات را دوره به دوره نشان میدهد تا بتوان جمع کل را بررسی کرد، نه فقط به آن اعتماد کرد. جدول بهصورت صفحهگسترده دانلود میشود.
روش
هر تاریخ به یک شمارهٔ روز تبدیل میشود — روزهای کامل شمردهشده از ۱ ژانویه ۱۹۷۰ — با حساب اعداد صحیح و بدون ساعت. همین یک تصمیم است که نتیجه را درست میکند. تاریخ روی تقویم یک لحظه در زمان نیست، و همین که با آن مثل لحظه رفتار شود، جایی است که ماشینحسابهای تاریخ خطا میکنند: 2026-03-29 وقتی بهعنوان نیمهشب UTC خوانده شود و همان تاریخ وقتی بهعنوان نیمهشب محلی خوانده شود دو لحظهٔ متفاوتاند، و در Europe/London روزی که ساعت تابستانی بریتانیا شروع میشود ۲۳ ساعت است، بنابراین تقسیم اختلاف میلیثانیهها بر ۸۶٬۴۰۰٬۰۰۰ برای بازهای که تقویم ۳۱ روز نشان میدهد، ۳۰٫۹۵۸ روز گزارش میکند. وقتی ساعتی در حساب نیست، آفستی هم نیست، و بدون آفست چیزی نیست که تغییر ساعت جابهجایش کند.
بازه یک بازهٔ نیمهباز است. همهچیز در صفحه — تعداد روزها، روزهای کاری، جدول، تفکیک سال و ماه — از همان [start, end) محاسبه میشود، و به همین دلیل روشن کردن «تاریخ پایان را بهعنوان یک روز بشمار» همهٔ آنها را با هم تغییر میدهد، نه فقط عدد سرتیتر را.
روزهای کاری با فرمول بسته شمرده میشوند، نه با پیمودن روز به روز بازه. هر هفتهٔ کامل در بازه همان تعداد روز کاری دارد، بنابراین فقط روزهای باقیمانده در انتها — حداکثر شش روز — باید جداگانه بررسی شوند. این مهم است چون فرمول با هر ضربهٔ کلید اجرا میشود: بازهای سهقرنی در غیر این صورت ۱۱۰٬۰۰۰ تکرار بهازای هر نویسهٔ تایپشده میشد.
ماههای کامل بیشترین تعداد ماهی که میتوان بدون عبور از تاریخ پایان به تاریخ شروع اضافه کرد تعریف میشود، که در آن اضافه کردن یک ماه به پایان ماه مقصد محدود میشود. بیان آن بهعنوان معکوس جمع، چیزی است که باعث میشود در حالتهای مرزی با خودش سازگار بماند — روش تفریق و قرض گرفتن، ۳۱ ژانویه تا ۲۸ فوریه را ۲۸ روز مینامد، در حالی که حساب ماهِ خودش یک ماه بعد از ۳۱ ژانویه را دقیقاً روی ۲۸ فوریه میگذارد.
تعطیلات فقط وقتی کسر میشوند که به روزی بیفتند که در غیر این صورت کار میشد. تعطیلی رسمی در روز شنبه از کسی روز کاری کم نمیکند، و اصلاً به همین دلیل دوشنبههای جایگزین وجود دارند.
پیش از ادامهٔ مطلب
۱ ژانویه تا ۲۵ دسامبر ۲۰۲۶، بدون شمردن تاریخ پایان، با هر هشت تعطیلی رسمی انگلستان و ولز برای سال ۲۰۲۶ در کادر تعطیلات. چند تا کسر میشود؟
شش. بازه یک بازهٔ نیمهباز است؛ همهچیز در صفحه از همان [start, end) محاسبه میشود. بنابراین ۲۵ دسامبر خط پایان است، نه یک روز شمردهشده، و تعطیلی جایگزینِ ۲۸ دسامبر بعد از آن است. به همین دلیل کلید «تاریخ پایان را بهعنوان یک روز بشمار» تعداد روزها، روزهای کاری، جدول و تفکیک سال و ماه را با هم تغییر میدهد، نه فقط عدد سرتیتر را.
358 = 51 x 7 + 1بازه را به هفتههای کامل و یک باقیمانده تقسیم کنید. باقیمانده حداکثر شش روز است، بازه هر چقدر باشد.
51 x 5 = 255هر هفتهٔ کامل همان پنج روز کاری را دارد، از هر روز هفته که شروع شده باشد.
255 + 1 = 256فقط روزهای باقیمانده باید جداگانه بررسی شوند. ۱ ژانویه ۲۰۲۶ پنجشنبه است، بنابراین تنها روز اضافی اینجا یک روز هفته است.
256 - 6 = 250فقط تعطیلاتی را کم کنید که به روزی میافتند که در غیر این صورت کار میشد. تعطیلی رسمی در شنبه از کسی روز کاری کم نمیکند، و به همین دلیل دوشنبههای جایگزین وجود دارند.
یک نمونه کار شده
از ۱ ژانویه ۲۰۲۶ تا ۲۵ دسامبر ۲۰۲۶، بدون شمردن تاریخ پایان، با آخر هفتهٔ شنبه و یکشنبه و هشت تعطیلی رسمی انگلستان و ولز برای سال ۲۰۲۶ در کادر تعطیلات.
| روزهای بین دو تاریخ | ۳۵۸ |
| روزهای کاری | ۲۵۰ |
| روزهای آخر هفته و تعطیلات | ۱۰۸ |
| هفتهها | ۵۱٫۱۴ |
| ماههای کامل | ۱۱ |
| به سال، ماه و روز | ۱۱ ماه و ۲۴ روز |
| تعطیلات کسرشده | ۶ |
با دست بررسی کنید. ۱ ژانویه ۲۰۲۶ پنجشنبه است و ۳۵۸ روز یعنی ۵۱ هفتهٔ کامل بهعلاوهٔ یک روز:
358 = 51 x 7 + 1
51 whole weeks x 5 worked days = 255
روز باقیمانده، یعنی پنجشنبه = 1
---
weekdays 256
منهای تعطیلات رسمی در بازه - 6
---
business days 250
شش، نه هشت، چون بازه پیش از روز کریسمس متوقف میشود: ۲۵ دسامبر خط پایان است نه یک روز شمردهشده، و ۲۸ دسامبر بعد از آن است. جمع آخر هفتهها هم همینطور بررسی میشود — ۵۱ شنبه و ۵۱ یکشنبه ۱۰۲ میشود، بهعلاوهٔ شش تعطیلی، ۱۰۸.
ماه به ماه، یعنی همان جدولی که ابزار رسم میکند و دانلود میدهد:
| دوره | روزها | روزهای کاری | آخر هفتهها و تعطیلات |
|---|---|---|---|
| ژانویه ۲۰۲۶ | ۳۱ | ۲۱ | ۱۰ |
| فوریه ۲۰۲۶ | ۲۸ | ۲۰ | ۸ |
| مارس ۲۰۲۶ | ۳۱ | ۲۲ | ۹ |
| آوریل ۲۰۲۶ | ۳۰ | ۲۰ | ۱۰ |
| مه ۲۰۲۶ | ۳۱ | ۱۹ | ۱۲ |
| ژوئن ۲۰۲۶ | ۳۰ | ۲۲ | ۸ |
| ژوئیه ۲۰۲۶ | ۳۱ | ۲۳ | ۸ |
| اوت ۲۰۲۶ | ۳۱ | ۲۰ | ۱۱ |
| سپتامبر ۲۰۲۶ | ۳۰ | ۲۲ | ۸ |
| اکتبر ۲۰۲۶ | ۳۱ | ۲۲ | ۹ |
| نوامبر ۲۰۲۶ | ۳۰ | ۲۱ | ۹ |
| دسامبر ۲۰۲۶ | ۲۴ | ۱۸ | ۶ |
دسامبر کوتاه است چون بازه در ۲۵ام متوقف میشود. جمع ستون روزها ۳۵۸ و ستون روزهای کاری ۲۵۰ است.
ستون «دوره» در خود ابزار با تقویم شما نوشته میشود، نه با تقویم میلادی: همان سطر اول آنجا «۱۴۰۴ دی» خوانده میشود، چون سلول یک مُهر زمانی است و نوشتنش با تقویم خواننده انجام میگیرد. سطرها و شمارشها همانهایی هستند که در جدول بالا آمدهاند — هر سطر یک ماه میلادی را میشمارد و برچسبش نام ماهی است که روز اول آن در تقویم هجری شمسی در آن میافتد. جدول این صفحه عمداً میلادی نوشته شده تا با نمونهٔ کار شده بخواند.
اینها همان اعدادی هستند که در فایل آزمون این ابزار تثبیت شدهاند، بنابراین اگر فرمول بدون تغییر همزمان این صفحه عوض شود، فرایند ساخت شکست میخورد.
کاری که انجام نمیدهد
تعطیلات شما را نمیشناسد. کادر با تعطیلات رسمی انگلستان و ولز برای سال ۲۰۲۶ شروع میشود، چون پیشفرض باید چیزی باشد، و هر کشور دیگر، هر تعطیلی شرکتی و هر تعطیلی منطقهای باید تایپ یا چسبانده شود. مفهومی از نیمروز، الگوهای پارهوقت یا هفتهٔ کاریای غیر از چهار گزینهٔ آخر هفته ندارد، و نمیداند که بعضی صنایع تعطیلی رسمی را روز کاری عادی حساب میکنند. تاریخها را فقط به شکل YYYY-MM-DD میخواند، بنابراین ۰۳/۰۴/۲۰۲۶ رد میشود نه حدس زده — آن تاریخ در لندن ۳ آوریل و در نیویورک ۴ مارس است، و حدس اشتباه بدتر از پرسیدن است. در نهایت، تقویم تا هر جا که برگردید میلادی است، حتی پیش از پذیرش آن، بنابراین بازهای که از سپتامبر ۱۷۵۲ بریتانیا میگذرد یازده روزی را میشمارد که هنگام تغییر تقویم حذف شدند.
و خروجیاش یک شمارش است، نه یک صفحه. اگر چیزی میخواهید که روزها را رویش بنویسید، تقویم قابل چاپ همان بازه را به شکلی میدهد که از چاپگر سالم بیرون میآید.
فرمول
هر تاریخ به شمارهٔ روز تبدیل میشود: تعداد روزهای کامل از ۱۹۷۰-۰۱-۰۱
در گاهشماری میلادی امتدادی، بدون ساعت یا منطقهٔ زمانی.
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 را دوشنبه برگزار میکند، و به همین دلیل فهرست پیشفرض تاریخ جایگزین را دارد.
- هر خطی در کادر تعطیلات که تاریخ ندارد نادیده گرفته میشود، نه رد، چون نمایش خطا، درست وقتی کسی در میانهٔ چسباندن یک فهرست است، صفحه را خالی میکند. رقم «تعطیلات کسرشده» راه بررسی آن است، چون خطهایی را میشمارد که واقعاً اعمال شدهاند.
- تقویم سراسر میلادیِ امتدادی (پرولپتیک) است، حتی برای تاریخهای پیش از پذیرش آن. بریتانیا در سپتامبر ۱۷۵۲ به آن تغییر داد و یازده روز را حذف کرد، بنابراین بازهای که از آن ماه میگذرد یک شمارش روز است، نه آنچه یک دفتر خاطرات آن زمان میگفت.
پرسشهای رایج
آیا روز اول، آخرین روز یا هر دو را به حساب میآورد؟
بهطور پیشفرض هیچکدام از دو سر را یک روز کامل نمیشمارد: فاصله را اندازه میگیرد، بنابراین ۱ ژوئن تا ۳۰ ژوئن ۲۹ است. این همان چیزی است که برای ضربالاجل، مهلت اخطار یا بهره میخواهید. «تاریخ پایان را بهعنوان یک روز بشمار» را برای هر چیزی که روزشمار صورتحساب میشود — اقامت در هتل، کرایهٔ ماشین، مرخصی سالانه — روشن کنید تا همان بازه ۳۰ خوانده شود.
آیا تاریخهای من به جایی ارسال میشود؟
نه. محاسبه در همین تب مرورگر اجرا میشود و سروری نیست که چیزی به آن فرستاده شود. فهرست تعطیلات هم، که تنها بخشی است که میتواند کشور یا کارفرما را لو بدهد، هرگز از صفحه بیرون نمیرود.
آیا ساعت تابستانی جواب را تغییر میدهد؟
نه، و این عمدی است. ابزار با روزهای کامل تقویمی کار میکند، نه با ساعت، بنابراین روز ۲۳ ساعتهٔ بهار و روز ۲۵ ساعتهٔ پاییز هرگز وارد حساب نمیشوند. ابزاری که دو مُهر زمانی را از هم کم میکند و بر ۲۴ ساعت تقسیم میکند، آن دو هفته از سال را یک روز اشتباه میگیرد.
چرا ۳۱ ژانویه تا ۲۸ فوریه یک ماه کامل است؟
چون یک ماه بعد از ۳۱ ژانویه به ۲۸ فوریه میرسد — ۳۱ فوریهای وجود ندارد، بنابراین تاریخ به آخر ماه محدود میشود. تعریف فاصله بهعنوان معکوس همان جمع، چیزی است که این دو را سازگار نگه میدارد. روش جایگزین، یعنی تفریق شمارههای روز و قرض گرفتن، ۲۸ روز گزارش میکند و بعد با حساب ماهِ خودش ناسازگار میشود.
در ابتدا کدام تعطیلات رسمی در کادر هستند؟
هشت تعطیلی رسمی انگلستان و ولز برای سال ۲۰۲۶، همانطور که GOV.UK منتشر کرده است. آنها را با فهرست خودتان جایگزین کنید — در هر خط یک تاریخ به شکل YYYY-MM-DD — یا «none» بنویسید تا همهٔ روزهای هفته شمرده شوند. اسکاتلند و ایرلند شمالی فهرستهای متفاوتی دارند؛ به همین دلیل این یک کادر قابل ویرایش است، نه یک فرض ثابت.
چرا تفکیک از ماه به سال تغییر میکند؟
برای اینکه جدول خوانا بماند. یک سطر برای هر ماه برای یک پروژه یا مهلت اخطار مناسب است، اما دو تاریخ با سه قرن فاصله ۳٬۶۰۰ سطر میشود، بنابراین با بزرگ شدن بازه سطرها به سال، بعد دهه و بعد قرن پهن میشوند. هر سطر همچنان فقط بخشی از دورهٔ خود را میشمارد که داخل بازه است، بنابراین جمع ستون همیشه با عدد سرتیتر برابر است.
منابع
روش را Tessalor در ۸ مرداد ۱۴۰۵ نوشته و بررسی کرده است.