समस्या महीने में दिनों की संख्या नहीं है, यह कितनी हफ्तों तक फैलती है।
गैर-लीप वर्ष में फरवरी में 28 दिन होंगे, और यदि महीने का पहला दिन सोमवार है, तो फरवरी निश्चित रूप से 4 सप्ताह की संख्या में फैलेगा।
हालांकि, अगर महीने का पहला दिन एक मंगलवार, या सप्ताह के किसी अन्य दिन है, तो फरवरी 5 सप्ताह की संख्या में फैलेगा।
एक 31 दिन का महीना उसी तरह 5 या 6 सप्ताह तक फैल सकता है। अगर माह सोमवार को शुरू होता है, तो 31 दिन आपको 5 सप्ताह की संख्या देता है। अगर माह शनिवार या रविवार को शुरू होता है, तो यह 6 सप्ताह की संख्या में फैला होगा।
तो इस नंबर को प्राप्त करने का सही तरीका महीने के पहले और अंतिम दिनों की सप्ताह संख्या को ढूंढना है।
Edit #1: Here's how to calculate the number of weeks a given month spans:
Edit #2: Fixed bugs in code
public static Int32 GetWeekForDateCurrentCulture(DateTime dt)
{
CultureInfo culture = Thread.CurrentThread.CurrentCulture;
Calendar cal = culture.Calendar;
return cal.GetWeekOfYear(dt,
culture.DateTimeFormat.CalendarWeekRule,
culture.DateTimeFormat.FirstDayOfWeek);
}
public static Int32 GetWeekSpanCountForMonth(DateTime dt)
{
DateTime firstDayInMonth = new DateTime(dt.Year, dt.Month, 1);
DateTime lastDayInMonth = firstDayInMonth.AddMonths(1).AddDays(-1);
return
GetWeekForDateCurrentCulture(lastDayInMonth)
- GetWeekForDateCurrentCulture(firstDayInMonth)
+ 1;
}