簡體   English   中英

從周數開始計算月份

[英]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.FirstFourDayWeekDayOfWeek.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);

從周數計算日期:

從周數計算日期

獲取WeekOfMonth:

在.NET中計算一周中的星期幾

使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM