从周数计算月份

时间:2011-05-10 09:50:07

标签: c# asp.net culture

我从数据库得到一周没有需要计算它是哪个星期。

代表:

week no = 7 month = 2

week no 11 month = 3

如何计算?

只是添加我也有年份值和周号。

6 个答案:

答案 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.FirstFourDayWeekDayOfWeek.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)

从周数计算日期:

Calculate date from week number

获取一周的一周:

Calculate week of month in .NET

答案 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