2016-10-12 101 views
0

我想在此基礎上得到一個特定的一天的日期就像如何獲得一天的日期在一個星期在C#

GetDate(22, 4); 

這需要返回第4天的時間順序在一個星期今年第22周。你能讓我知道如何做到這一點?

void Main() 
{ 
    int months; 
    var year = DateTime.Now.ToString("yyyy"); 
    months = GetWeeksInYear(Convert.ToInt32(year)); 
    Console.WriteLine(months); 
} 

public int GetWeeksInYear(int year) 
{ 
     DateTimeFormatInfo dfi = DateTimeFormatInfo.CurrentInfo; 
     DateTime date1 = new DateTime(year, 12, 31); 
     Calendar cal = dfi.Calendar; 
     return cal.GetWeekOfYear(date1, dfi.CalendarWeekRule, dfi.FirstDayOfWeek);  
} 

public int GetDate(int weekNo, int dayNo) 
{ 
    return // Date 
} 
+0

您可能希望'public DateTime GetDate',而不是'int'作爲返回類型。 – Igor

+0

你至少需要一年閏年。我可能會發現'GetDate(1,1)'應該返回什麼值然後加上'21 * 7 + 3'天。 – Guvante

+0

您是否將整週(週日到週六或文化差異)的「星期」視爲一組7天?即GetDate(1,1);'返回一年的第一個星期日(或其他),還是應該一直返回1月1日? – Abion47

回答

3

您只需從今年年初增加的天數:

var dt = new DateTime(year, 1, 1); 
dt = dt.AddDays(weekNo * 7 + dayNo); 
var date = dt.Date; 
0

我想一個簡單的方法是採取1月1年,並添加天數,

DateTime day = new DateTime(year, 1, 1).AddDays((week * 7) + days); 
0

一年中的一週是一個日曆計算和區域設置相關的值,所以你必須考慮當給出一週的時間... 所以你肯定會錯過使用s類似於

CultureInfo.CurrentCulture.Calendar; 
相關問題