இரண்டு தேதிகளுக்கிடையில் வேலை வாரங்களை எப்படி கணக்கிடுவது (ஏன் இது பார்க்கிறதுக்கு எளிதாக இல்லை)
உங்களிடம் இரண்டு தேதிகள் இருக்கின்றன; அவற்றுக்கிடையில் எத்தனை வேலை வாரங்கள் இருக்கின்றன என்பதை தெரிந்துகொள்ள வேண்டும். இது 5 விநாடி பிரச்சனை போலத் தோன்றலாம். நாட்களை 7ஆல் வகுக்கவும், சில வார இறுதிகளை கழிக்கவும் — முடிந்தது.
ஆனால் உண்மை அது அல்ல; ஏனெனில் “வேலை வாரம்” என்பதே ஒரு துல்லியமான வரையறை அல்ல. நீங்கள் என்ன கணக்கிடுகிறீர்கள் என்பதற்கு ஏற்ப — நோட்டீஸ் காலம், திட்ட காலக்கோடு, விடுப்பு உரிமை, ஒப்பந்த காலம் — சரியான முறை மாறும். தவறான முறையை பயன்படுத்தினால், சட்டரீதியாக அல்லது நிதியளவில் முக்கியமான அளவிற்கு நாட்கள் வித்தியாசமாகி விடலாம்.
“வேலை வாரம்” என்றால் உண்மையில் என்ன?
பொதுவாக வேலை வாரம் என்றால் ஐந்து நாட்கள்: திங்கள் முதல் வெள்ளி வரை. ஆனால் அறிந்திருக்க வேண்டிய சில விலகல்கள் (edge cases) உள்ளன:
- சில துறைகள் மற்றும் நாடுகளில் 6 நாள் வேலை வாரம் (திங்கள்–சனி) பயன்படுத்தப்படுகிறது
- சில பணிகளில் சுருக்கப்பட்ட 4 நாள் வேலை வாரம் இருக்கும்
- மத்திய கிழக்கில் பாரம்பரியமாக ஞாயிறு–வியாழன் நடைமுறையில் இருந்தது; ஆனால் பல நாடுகள் திங்கள்–வெள்ளி முறைக்கு மாறியுள்ளன
- பகுதி நேர (part‑time) பணியாளர்களுக்கு 2, 3, அல்லது 4 நாட்கள் வேலை வாரமாக இருக்கலாம்
இந்தக் கட்டுரியின் மீதியில், வேறு விதமாக குறிப்பிடப்படாவிட்டால், “வேலை வாரம்” என்பது திங்கள்–வெள்ளி என்ற நிலையான வாரமாக கருதப்படுகிறது. உங்கள் சூழ்நிலைக்கு சரியான வேலை நாட்களை தெரிந்துகொண்டால், இங்கு உள்ள முறைகள் பொதுவாகப் பொருந்தும்.
முறை 1: முழு வேலை வாரங்கள்
எளிய விளக்கம்: இரண்டு தேதிகளுக்கிடையில் எத்தனை முழு திங்கள்‑முதல்‑வெள்ளி தொகுதிகள் (blocks) அடங்குகின்றன?
“இது எத்தனை வார நோட்டீஸ்?” என்ற கேள்வியில் பலர் இதைத்தான் பொருளாக்குகிறார்கள். 4 வார நோட்டீஸ் என்றால், தொடக்க தேதி வாரத்தின் எந்த நாளில் இருந்தாலும், 4 முழு திங்கள்–வெள்ளி தொகுதிகள் — 20 வேலை நாட்கள்.
கணக்கிடுவது:
1. இரண்டு தேதிகளுக்கிடையில் உள்ள மொத்த காலண்டர் நாட்களை கணக்கிடுங்கள் 2. வார இறுதி நாட்களை கழிக்கவும்: ஒவ்வொரு முழு 7 நாள் தொகுதியிலும் 2 வார இறுதி நாட்கள் உள்ளன 3. தொடக்கமும் முடிவிலும் இருக்கும் பகுதி வாரங்களை கணக்கில் கொள்ளுங்கள்
நடைமுறையில், வேலை நாட்களை நேரடியாகக் கணக்கிட்டு 5ஆல் வகுப்பது எளிது:
working_weeks = working_days / 5
இங்கு working_days என்பது இரண்டு தேதிகளுக்கிடையில் (திங்கள்–வெள்ளி) உள்ள வேலை நாட்களின் எண்ணிக்கை.
உதாரணம்: ஏப்ரல் 7 (திங்கள்) முதல் மே 2 (வெள்ளி)
- காலண்டர் நாட்கள்: 25
- வரம்புக்குள் வார இறுதிகள்: 4 சனிகள் + 4 ஞாயிறுகள் = 8 நாட்கள்
- வேலை நாட்கள்: 25 − 8 = 17... காத்திருங்கள், இது சரியாக இல்லை.
சரியான வழி: திங்கள் முதல் வெள்ளி வரை உள்ள நாட்களை உள்ளடக்கமாக (inclusive) எண்ணுங்கள்:
- வாரம் 1: ஏப் 7–11 (5 நாட்கள்)
- வாரம் 2: ஏப் 14–18 (5 நாட்கள்)
- வாரம் 3: ஏப் 21–25 (5 நாட்கள்)
- வாரம் 4: ஏப் 28–மே 2 (5 நாட்கள்)
மொத்தம்: 20 வேலை நாட்கள் = 4 வேலை வாரங்கள் துல்லியமாக.
இந்த உதாரணம் திங்களில் தொடங்கி வெள்ளியில் முடிவதால் சீராக வருகிறது. வார நடுவில் தொடங்கினாலோ முடிந்தாலோ பகுதி (fractional) முடிவு வரும் — அதுதான் அடுத்த முறை.
முறை 2: வேலை நாட்கள் ÷ 5
பல நடைமுறை பயன்பாடுகளில் — திட்டத் திட்டமிடல், காலக்கோடு மதிப்பீடு, திறன் கணக்குகள் — முழு வாரங்கள் தேவையில்லை. வேலை நாட்கள் வேண்டும்; அதை வாரங்களாகவும் நாட்களாகவும் வெளிப்படுத்த வேண்டும்.
சூத்திரம்:
total_working_days = (full_weeks × 5) + working_days_in_partial_week
weeks = floor(total_working_days / 5)
remaining_days = total_working_days mod 5
உதாரணம்: மார்ச் 18 (புதன்) முதல் ஏப்ரல் 11 (வெள்ளி)
வேலை நாட்களை எண்ணுங்கள்:
- மார்ச் 18 (புதன்) முதல் மார்ச் 21 (வெள்ளி): 4 நாட்கள்
- மார்ச் 24–28: 5 நாட்கள்
- மார்ச் 31–ஏப் 4: 5 நாட்கள்
- ஏப் 7–11: 5 நாட்கள்
மொத்தம்: 19 வேலை நாட்கள் = 3 வாரங்கள் மற்றும் 4 நாட்கள்.
நாட்களில் திறனை கணக்கிட வேண்டிய திட்ட காலக்கோடுகளுக்கு இதுதான் சரியான முறை.
முறை 3: ISO வார இடைவெளி (ISO Week Span)
சில நேரங்களில் “எத்தனை வாரங்கள் இடையில்?” என்பதன் அர்த்தம்: ISO வார எண்களின் வித்தியாசம் எவ்வளவு?
உதாரணம்: ஒரு நிகழ்வு ISO வாரம் 10 முதல் ISO வாரம் 23 வரை நடந்தால், அது 13 ISO வாரங்கள் நீடித்தது.
கணக்கீடு:
week_span = (end_iso_year × 52.18) + end_iso_week − (start_iso_year × 52.18) + start_iso_week
நடைமுறையில், ஒரே ஆண்டுக்குள் உள்ள தேதிகளுக்கு:
week_span = end_iso_week − start_iso_week
ஆண்டு எல்லையை (year boundary) கடக்கும் தேதிகளுக்கு, தொடக்க ஆண்டில் 52 அல்லது 53 வாரங்கள் இருந்ததா என்பதை கணக்கில் கொள்ள வேண்டும்:
week_span = (52_or_53_for_start_year − start_iso_week) + end_iso_week
ISO வார எண் அடிப்படையில் வேலை ஒழுங்குபடுத்தும் துறைகளில் — ஒளிபரப்பு அட்டவணை, சில்லறை திட்டமிடல் போன்றவற்றில் — இந்த முறை பொருத்தமானது.
தேதிகளை “உள்ளடக்க” கணக்கிடலா? (Date Inclusivity Problem)
பிழைகள் ஏற்படுவதற்கான பொதுவான காரணம்: தொடக்க தேதியை எண்ண வேண்டுமா, முடிவு தேதியை எண்ண வேண்டுமா, இரண்டையும் எண்ண வேண்டுமா, அல்லது ஒன்றையும் எண்ண வேண்டாமா என்பதே.
“இன்றிலிருந்து தொடங்கும் 4 வார நோட்டீஸ்” என்பதற்கு அர்த்தம் இரண்டாக இருக்கலாம்:
- இன்று நாள் 1 (inclusive start) என்றால்: 4 வாரங்கள் கழித்து அதே வார நாளில் முடியும்
- இன்று கணக்கில் சேராது (exclusive start) என்றால்: மேலதற்கு ஒப்பிடும் போது ஒரு நாள் பின்னர் முடியும்
பல நாடுகளில் வேலைவாய்ப்பு சட்டம் இதைத் தெளிவாகக் குறிப்பிடும். UK வேலைவாய்ப்பு சட்டத்தில், நோட்டீஸ் கொடுத்த நாளின் அடுத்த நாளிலிருந்து காலம் கணக்கிடப்படுகிறது. US‑இல் அது ஒப்பந்தத்தின் அடிப்படையில் மாறும்.
வித்தியாசம் ஒரு நாள் தான். பல சமயங்களில் அது பெரிய விஷயம் இல்லை. ஆனால் வேலைவாய்ப்பு தகராறுகள் அல்லது ஒப்பந்த முடிவுகளில் அது முக்கியமாகலாம்.
பாதுகாப்பான வழி: “[தேதி] முதல் X வேலை வாரங்கள், inclusive/exclusive” என்று தெளிவாக எழுதுங்கள். குழப்பமாக விடாதீர்கள்.
அனைவரும் மறக்கும் கணக்கு: பொது விடுமுறைகள் (Public Holidays)
பொது விடுமுறைகளை கணக்கில் கொள்ளாத வேலை வாரக் கணக்குகள் வரையறைப்படியே தவறு — அவை கிடைக்கக்கூடிய வேலை நேரத்தை அதிகமாகக் காட்டும்.
சவால் என்னவென்றால், பொது விடுமுறைகள் ஒரே மாதிரி இல்லை. அவை மாறுவது:
- நாடு (UK‑இல் டிசம்பர் 25 ஒரு பொது விடுமுறை; ஜப்பானில் அது பொதுவிடுமுறை அல்ல)
- ஒரு நாட்டுக்குள்ளேயே பகுதிகளால் (US மாநிலங்களின் விடுமுறைகள் வேறுபடும்; இங்கிலாந்து/ஸ்காட்லாந்து bank holidays வேறுபடும்)
- ஆண்டுக்காண்டு (ஈஸ்டர் போன்ற moveable feasts ஒவ்வோர் ஆண்டும் தேதியை மாற்றும்)
- வேலை ஒப்பந்தம் (சில வேலைகளில் கூடுதல் விடுமுறைகள்; சில அரசு வேலைகளில் வேறு தேதிகள்)
சரளமான மதிப்பீடுகளுக்கு — “சுமார் 6 வேலை வாரங்கள்” — விடுமுறைகளைப் பொருட்படுத்தாமல் விடலாம். ஆனால் துல்லியமான கணக்குகளுக்கு — ஒப்பந்த கடைசி நாள், நோட்டீஸ் காலம், சட்ட காலக்கெடுகள் — பொருந்தும் பொது விடுமுறைகளை கட்டாயம் கழிக்க வேண்டும்.
உங்கள் பிரதேசமும் குறிப்பிட்ட ஆண்டும் தெரியாமல் எந்த கணக்கீட்டுக் கருவியும் இதை தானாக செய்ய முடியாது. தேதிகளுக்கிடையிலான நாட்கள் கணக்கீட்டு கருவி வார இறுதிகளைத் தவிர்த்து வேலை நாட்களை காட்டும்; அதில் உங்கள் உள்ளூர் பொது விடுமுறைகளை நீங்கள் கைமுறையாக கழிக்க வேண்டும்.
UK‑க்கு ஒரு பயனுள்ள அணுகுமுறை: வருடத்திற்கு சுமார் 8 bank holidays, மாதத்திற்கு சுமார் 1.6. 3 மாதக் கணக்கில் சுமார் 5 விடுமுறைகள் கழிக்க வேண்டும். US federal holidays: வருடத்திற்கு 11, மாதத்திற்கு சுமார் 0.9.
நோட்டீஸ் காலங்கள்: கணக்கு உண்மையில் எப்படி வேலை செய்கிறது
வேலை ஒப்பந்தங்கள் நோட்டீஸ் காலங்களை வாரங்கள் அல்லது மாதங்கள் என்று குறிப்பிடுகின்றன. இதை வேலை நாட்களாக மாற்றும்போது தான் அதிகமாகப் பிழைகள் ஏற்படும்.
“4 வார நோட்டீஸ்” என்றால் 4 காலண்டர் வாரங்கள் (28 நாட்கள்), 4 × 5 = 20 வேலை நாட்கள் அல்ல. செவ்வாயன்று நோட்டீஸ் கொடுத்தால், அது 28 காலண்டர் நாட்கள் ஓடும் — இதில் வார இறுதிகளும் அடங்கும். நோட்டீஸ் காலத்தின் கடைசி நாள், 4 வாரங்கள் கழித்த செவ்வாயே.
இது பலருக்கு ஆச்சரியம்; ஏனெனில் அவர்கள் “4 வாரங்கள்” என்றால் 20 வேலை நாட்கள் என்று எதிர்பார்க்கிறார்கள். ஆனால் அது அல்ல — அது 28 காலண்டர் நாட்கள்; அதில் உள்ள வார இறுதிகளும் நோட்டீஸ் காலத்தில் சேரும், நீங்கள் அவற்றில் வேலை செய்யாவிட்டாலும்.
“1 மாத நோட்டீஸ்” என்பது இன்னும் குறைந்த துல்லியம். ஜனவரி 15‑க்கு ஒரு மாதம் என்றால் பிப்ரவரி 15. ஜனவரி 31‑க்கு ஒரு மாதம் என்றால் பிப்ரவரி 28 (அல்லது leap year‑இல் 29). காலண்டர் நாட்கள் 28 முதல் 31 வரை மாறும். அந்த மாதத்திற்குள் உள்ள வேலை நாட்கள் 20 முதல் 23 வரை மாறும்.
ஒப்பந்தங்களில் வேலை வாரங்கள் vs காலண்டர் வாரங்கள்:
ஒரு ஒப்பந்தம் “4 வேலை வார நோட்டீஸ்” என்று சொன்னால், அது 20 வேலை நாட்கள் — திங்கள்–வெள்ளி மட்டும். வார இறுதிகள் எண்ணப்படாது. அப்படி என்றால் செவ்வாயன்று தொடங்கும் நோட்டீஸ், 20 வேலை நாட்கள் முடியும் வரை ஓடும்; இடையில் வரும் வார இறுதிகளின் எண்ணிக்கையைப் பொறுத்து பல காலண்டர் வாரங்கள் பின்னர் முடியும்.
உங்கள் ஒப்பந்தத்தில் “weeks” என்று உள்ளதா “working weeks” என்று உள்ளதா என்பதை கண்டிப்பாகச் சரிபார்க்கவும். சாதாரண நோட்டீஸ் காலத்தில் கூட அது 8–10 நாட்கள் வித்தியாசமாகலாம்.
திட்ட காலக்கோடுகள்: முயற்சி வாரங்கள் (effort) vs காலண்டர் வாரங்கள்
திட்ட மேலாண்மையில் “3 வார வேலை” மற்றும் “3 காலண்டர் வாரங்கள்” ஒன்றல்ல.
முழுத் திறனில் 3 வார முயற்சி = 15 நபர்‑வேலை‑நாட்கள். ஒரு பணியை ஒருவர் முழு நேரமாக செய்தால் 3 காலண்டர் வாரங்கள் ஆகும். இருவர் பகிர்ந்து செய்தால் 1.5 காலண்டர் வாரங்கள் ஆகும். ஒருவர் 50% திறனில் இருந்தால் 6 காலண்டர் வாரங்கள் ஆகும்.
3 காலண்டர் வாரங்கள் = விடுமுறைகள் இல்லை, யாரும் பகுதி நேரமில்லை, context‑switching overhead இல்லை என்றால் 15 வேலை நாட்கள்.
விநியோக தேதிகளை திட்டமிடும்போது இந்த வேறுபாடு முக்கியம். நீங்கள் “3 வாரம்” என்று சொல்வது 80% திறனில் உள்ள வேலை வாரங்களாகவும் நடுவில் ஒரு bank holiday உள்ளதாகவும் இருந்தால், காலண்டர் முடிவு தேதி அவர்கள் நினைப்பதை விட வேறுபடும்.
டைம்லைன் சொல்லும்போது:
- ஒரு மாதத்திற்குக் குறைவான பணிகளுக்கு வாரங்கள் அல்ல, வேலை நாட்களை சொல்லுங்கள்
- sanity check ஆக காலண்டர் முடிவு தேதியையும் சேர்க்கவும்
- அந்த காலத்தில் உள்ள விடுமுறைகளை வெளிப்படையாக குறிப்பிடவும்
கோடில் வேலை வாரங்களை கணக்கிடுதல்
Python:
from datetime import date, timedelta
def working_days(start: date, end: date) -> int:
total = 0
current = start
while current <= end:
if current.weekday() < 5: # 0=Mon, 4=Fri
total += 1
current += timedelta(days=1)
return total
def working_weeks(start: date, end: date) -> float:
return working_days(start, end) / 5
# Example
start = date(2026, 4, 7)
end = date(2026, 5, 2)
print(working_days(start, end)) # 20
print(working_weeks(start, end)) # 4.0
பெரிய தேதி வரம்புகளுக்கு, லூப் செய்யாமல் modular arithmetic பயன்படுத்தும் வேகமான அணுகுமுறை:
def working_days_fast(start: date, end: date) -> int:
days = (end - start).days + 1
full_weeks, remainder = divmod(days, 7)
working = full_weeks * 5
# Count working days in the partial week
start_dow = start.weekday() # 0=Mon
for i in range(remainder):
if (start_dow + i) % 7 < 5:
working += 1
return working
JavaScript:
function workingDays(start, end) {
let count = 0
const current = new Date(start)
while (current <= end) {
const day = current.getDay()
if (day !== 0 && day !== 6) count++ // 0=Sun, 6=Sat
current.setDate(current.getDate() + 1)
}
return count
}
function workingWeeks(start, end) {
return workingDays(start, end) / 5
}
SQL (PostgreSQL):
-- Working days between two dates (excluding weekends)
SELECT
(EXTRACT(DOW FROM end_date) - EXTRACT(DOW FROM start_date))::int +
((end_date - start_date) / 7) * 5 +
CASE WHEN EXTRACT(DOW FROM start_date) = 0 THEN 1 ELSE 0 END +
CASE WHEN EXTRACT(DOW FROM end_date) = 6 THEN -1 ELSE 0 END
AS working_days
FROM (SELECT DATE '2026-04-07' AS start_date, DATE '2026-05-02' AS end_date) t;
விரைவு குறிப்பேடு
| நீங்கள் விரும்புவது | முறை |
|---|---|
| நோட்டீஸ் காலம் | காலண்டர் நாட்கள் (வார இறுதிகள் சேரும்) |
| திட்ட வேலை திறன் | வேலை நாட்கள் (திங்கள்–வெள்ளி), வாரங்களுக்காக 5ஆல் வகுக்கவும் |
| ஒளிபரப்பு/சில்லறை திட்டமிடல் | ISO வார இடைவெளி |
| விடுப்பு உரிமை | வேலை நாட்கள், பொது விடுமுறைகளை கழிக்கவும் |
| ஒப்பந்த கடைசி நாட்கள் | ஒப்பந்தம் “working days” என்று சொல்லாவிட்டால் காலண்டர் நாட்கள் |
தேதிகளுக்கிடையிலான நாட்கள் கணக்கீட்டு கருவி எந்த தேதி வரம்பிற்கும் காலண்டர் நாட்களையும் வேலை நாட்களையும் காட்டுகிறது — உங்கள் பிரதேசத்தின் பொது விடுமுறைகளை சரிசெய்யும் முன் தொடக்கப் புள்ளியாக இது பயனாகும்.

