我从数据库得到一周没有需要计算它是哪个星期。
代表:
week no = 7 month = 2
week no 11 month = 3
如何计算?
只是添加我也有年份值和周号。
答案 0 :(得分:4)
好的,我会去,但它不是很漂亮:
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
来表示正确的结果。
答案 1 :(得分:2)
假设您正在寻找特定年份的月份:
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);
答案 2 :(得分:2)
答案 3 :(得分:0)
使用DateTime,您可以将周数乘以7,得到一年中传递的总天数,将这些天数添加到31/12 / yyyy-1,并从得到的DateTime中获取月份。
我希望这对你有用。
见。
答案 4 :(得分:0)
4周= 1个月 所以使用
周%4
它的回报不是你的月份
答案 5 :(得分:0)
这是使用Time Period Library for .NET的解决方案:
// ----------------------------------------------------------------------
public int GetMonthOfWeek( int weekOfYear )
{
return new Week( weekOfYear ).FirstDayStart.Month;
} // GetMonthOfWeek