[英]calulate month from week no
我從數據庫得到一周沒有需要計算它是哪個星期。
對於前:
week no = 7 month = 2
week no 11 month = 3
怎么算出來?
只是加上我也有一周的年份值。
好的,我會去,但它不是很漂亮:
public int MonthOfWeek( int week, int year, CalendarWeekRule, weekrule, DayOfWeek firstDayOfWeek)
{
GregorianCalendar gc = new GregorianCalendar();
for( DateTime dt = new DateTime(year, 1, 1); dt.Year == year; dt = dt.AddDays(1))
{
if( gc.GetWeekOfYear( dt, System.Globalization.CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday) == week ){
return dt.Month;
}
}
return -1;
}
這考慮了產生周的文化特定規則。 如果一個星期在兩個月之間分開,它將返回它遇到的第一個月。
所以在挪威,我會用CalendarWeekRule.FirstFourDayWeek
和DayOfWeek.Monday
稱之為正確的結果。
假設您正在尋找給定年份的月份:
var dtYearStart = new DateTime(DateTime.Now.Year, 1, 1);
CultureInfo defaultCultureInfo = CultureInfo.CurrentCulture;
// Check for the starting date of the initial week.
int diff = dtYearStart.DayOfWeek - defaultCultureInfo.DateTimeFormat.FirstDayOfWeek;
if (diff < 0)
{
diff += 7;
}
dtYearStart = dtYearStart.AddDays(-1 * diff).Date;
int weekNo = 15;
DateTime dtWeekBased = dtYearStart.AddDays((weekNo-1) * 7);
string strMonth = CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(dtWeekBased.Month);
使用DateTime,您可以將周數乘以7,獲得一年中傳遞的總天數,將這些天數添加到31/12 / yyyy-1並從結果DateTime獲取月份。
我希望這對你有用。
再見。
4周= 1個月所以使用
周4%
它不會讓你回歸月份
這是使用.NET時間段庫的解決方案:
// ----------------------------------------------------------------------
public int GetMonthOfWeek( int weekOfYear )
{
return new Week( weekOfYear ).FirstDayStart.Month;
} // GetMonthOfWeek
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.