فهرست

جست‌وجوی ابزارهاگزارش تغییرات

برای جابه‌جایی برای باز کردنمسئله را توضیح دهید، نه نام ابزار را

روزهای بین دو تاریخ

حساب کنید دو تاریخ چقدر از هم فاصله دارند — به روز، هفته، ماه کامل و سال — و اینکه پس از کنار گذاشتن آخر هفته‌ها و تعطیلات رسمی، واقعاً چند روز از آن‌ها کار می‌شود. بازه دوره به دوره تفکیک می‌شود و جدول به‌صورت صفحه‌گسترده دانلود می‌شود.

تاریخ زودتر. ترتیب مهم نیست؛ ابزار فاصلهٔ بین این دو را گزارش می‌کند.

تاریخ دیرتر. به‌طور پیش‌فرض خط پایان است، نه روزی که شمرده می‌شود.

برای مرخصی یا اجاره روشنش کنید: ۱ تا ۵ ژوئن با شمردن هر دو سر پنج روز است و بدون آن چهار روز.

روزهای بین دو تاریخ
۳۵۸
روزهای کامل تقویمی، بنابراین تغییر ساعت هرگز روزی را اضافه یا کم نمی‌کند.
روزهای کاری
۲۵۰
روزهای آخر هفته و تعطیلات
۱۰۸
هفته‌ها
۵۱٫۱۴
ماه‌های کامل
۱۱
به سال، ماه و روز
۱۱ ماه و ۲۴ روز
تعطیلات کسرشده
۶

تفکیک بر اساس دوره

۱۴۰۴ دی۳۱۲۱۱۰
۱۴۰۴ بهمن۲۸۲۰۸
۱۴۰۴ اسفند۳۱۲۲۹
۱۴۰۵ فروردین۳۰۲۰۱۰
۱۴۰۵ اردیبهشت۳۱۱۹۱۲
۱۴۰۵ خرداد۳۰۲۲۸
۱۴۰۵ تیر۳۱۲۳۸
۱۴۰۵ مرداد۳۱۲۰۱۱
۱۴۰۵ شهریور۳۰۲۲۸
۱۴۰۵ مهر۳۱۲۲۹
۱۴۰۵ آبان۳۰۲۱۹
۱۴۰۵ آذر۲۴۱۸۶

نتیجه‌ها بدون تضمین درستی ارائه می‌شوند. روش و منابع در پایین صفحه منتشر شده‌اند تا بتوانید محاسبه را بررسی کنید.

روزهای کاری بر اساس دوره
Chart type for “روزهای کاری بر اساس دوره”
۰ ۵ ۱۰ ۱۵ ۲۰ ۲۵ ۳۰ ۳۵ ۱۴۰۴ دی ۱۴۰۵ خرداد ۱۴۰۵ آبان
۰ ۵ ۱۰ ۱۵ ۲۰ ۲۵ ۳۰ ۳۵ ۱۴۰۴ دی ۱۴۰۵ خرداد ۱۴۰۵ آبان
۰ ۵ ۱۰ ۱۵ ۲۰ ۲۵ ۳۰ ۳۵ ۱۴۰۴ دی ۱۴۰۵ خرداد ۱۴۰۵ آبان
۰ ۵ ۱۰ ۱۵ ۲۰ ۲۵ ۳۰ ۳۵ ۱۴۰۴ دی ۱۴۰۵ خرداد ۱۴۰۵ آبان
۰ ۵ ۱۰ ۱۵ ۲۰ ۲۵ ۳۰ ۳۵ ۱۴۰۴ دی ۱۴۰۵ خرداد ۱۴۰۵ آبان
۰ ۵ ۱۰ ۱۵ ۲۰ ۲۵ ۳۰ ۳۵ ۱۴۰۴ دی ۱۴۰۵ خرداد ۱۴۰۵ آبان

بازه به دوره‌ها تقسیم شده است. نوار کوتاه‌تر آن چیزی است که پس از کنار گذاشتن آخر هفته‌ها و تعطیلاتی که فهرست کرده‌اید باقی می‌ماند.

چگونگی کار

این ابزار چه چیزی را محاسبه می‌کند

دو پرسش درون «این تاریخ‌ها چقدر از هم فاصله دارند» پنهان است. اولی این است که چند روز بین آن‌هاست، که پیش‌پاافتاده به نظر می‌رسد تا وقتی متوجه شوید سال‌های کبیسه، قاعدهٔ قرن‌ها و دو تغییر ساعت در سال همه بین پاسخ و یک تفریق ساده‌انگارانه نشسته‌اند. دومی این است که چند روز از آن‌ها واقعاً کار می‌شود، که عددی است که برنامهٔ پروژه، مهلت اخطار یا تخمین تحویل به آن وابسته است.

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

روش

هر تاریخ به یک شمارهٔ روز تبدیل می‌شود — روزهای کامل شمرده‌شده از ۱ ژانویه ۱۹۷۰ — با حساب اعداد صحیح و بدون ساعت. همین یک تصمیم است که نتیجه را درست می‌کند. تاریخ روی تقویم یک لحظه در زمان نیست، و همین که با آن مثل لحظه رفتار شود، جایی است که ماشین‌حساب‌های تاریخ خطا می‌کنند: 2026-03-29 وقتی به‌عنوان نیمه‌شب UTC خوانده شود و همان تاریخ وقتی به‌عنوان نیمه‌شب محلی خوانده شود دو لحظهٔ متفاوت‌اند، و در Europe/London روزی که ساعت تابستانی بریتانیا شروع می‌شود ۲۳ ساعت است، بنابراین تقسیم اختلاف میلی‌ثانیه‌ها بر ۸۶٬۴۰۰٬۰۰۰ برای بازه‌ای که تقویم ۳۱ روز نشان می‌دهد، ۳۰٫۹۵۸ روز گزارش می‌کند. وقتی ساعتی در حساب نیست، آفستی هم نیست، و بدون آفست چیزی نیست که تغییر ساعت جابه‌جایش کند.

بازه یک بازهٔ نیمه‌باز است. همه‌چیز در صفحه — تعداد روزها، روزهای کاری، جدول، تفکیک سال و ماه — از همان [start, end) محاسبه می‌شود، و به همین دلیل روشن کردن «تاریخ پایان را به‌عنوان یک روز بشمار» همهٔ آن‌ها را با هم تغییر می‌دهد، نه فقط عدد سرتیتر را.

روزهای کاری با فرمول بسته شمرده می‌شوند، نه با پیمودن روز به روز بازه. هر هفتهٔ کامل در بازه همان تعداد روز کاری دارد، بنابراین فقط روزهای باقی‌مانده در انتها — حداکثر شش روز — باید جداگانه بررسی شوند. این مهم است چون فرمول با هر ضربهٔ کلید اجرا می‌شود: بازه‌ای سه‌قرنی در غیر این صورت ۱۱۰٬۰۰۰ تکرار به‌ازای هر نویسهٔ تایپ‌شده می‌شد.

ماه‌های کامل بیشترین تعداد ماهی که می‌توان بدون عبور از تاریخ پایان به تاریخ شروع اضافه کرد تعریف می‌شود، که در آن اضافه کردن یک ماه به پایان ماه مقصد محدود می‌شود. بیان آن به‌عنوان معکوس جمع، چیزی است که باعث می‌شود در حالت‌های مرزی با خودش سازگار بماند — روش تفریق و قرض گرفتن، ۳۱ ژانویه تا ۲۸ فوریه را ۲۸ روز می‌نامد، در حالی که حساب ماهِ خودش یک ماه بعد از ۳۱ ژانویه را دقیقاً روی ۲۸ فوریه می‌گذارد.

تعطیلات فقط وقتی کسر می‌شوند که به روزی بیفتند که در غیر این صورت کار می‌شد. تعطیلی رسمی در روز شنبه از کسی روز کاری کم نمی‌کند، و اصلاً به همین دلیل دوشنبه‌های جایگزین وجود دارند.

پیش از ادامهٔ مطلب

۱ ژانویه تا ۲۵ دسامبر ۲۰۲۶، بدون شمردن تاریخ پایان، با هر هشت تعطیلی رسمی انگلستان و ولز برای سال ۲۰۲۶ در کادر تعطیلات. چند تا کسر می‌شود؟

  • درست است، اما دو تای آن‌ها بیرون از این بازه می‌افتند.

  • بله. روز کریسمس خط پایان است نه روزی شمرده‌شده، و Boxing Day بعد از آن است.

  • پایان بازه است، و وقتی تاریخ پایان شمرده نمی‌شود یعنی داخل بازه نیست.

شش. بازه یک بازهٔ نیمه‌باز است؛ همه‌چیز در صفحه از همان [start, end) محاسبه می‌شود. بنابراین ۲۵ دسامبر خط پایان است، نه یک روز شمرده‌شده، و تعطیلی جایگزینِ ۲۸ دسامبر بعد از آن است. به همین دلیل کلید «تاریخ پایان را به‌عنوان یک روز بشمار» تعداد روزها، روزهای کاری، جدول و تفکیک سال و ماه را با هم تغییر می‌دهد، نه فقط عدد سرتیتر را.

چرا روزهای کاری یکی یکی شمارش نمی‌شود
  1. 358 = 51 x 7 + 1

    بازه را به هفته‌های کامل و یک باقی‌مانده تقسیم کنید. باقی‌مانده حداکثر شش روز است، بازه هر چقدر باشد.

  2. 51 x 5 = 255

    هر هفتهٔ کامل همان پنج روز کاری را دارد، از هر روز هفته که شروع شده باشد.

  3. 255 + 1 = 256

    فقط روزهای باقی‌مانده باید جداگانه بررسی شوند. ۱ ژانویه ۲۰۲۶ پنجشنبه است، بنابراین تنها روز اضافی اینجا یک روز هفته است.

  4. 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 در ۸ مرداد ۱۴۰۵ نوشته و بررسی کرده است.