2016-10-12 13 views
0

I Datum eines bestimmten Tages zu bekommen versuchen, basierend auf es Sequenz in einer Woche wieWie Datum eines Tages in einer Woche in C# Get

GetDate(22, 4); 

welches das Datum des 4. Tages zurückkehren muss in 22. Wochen des laufenden Jahres. Können Sie mir bitte sagen, wie das geht?

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

Sie möchten wahrscheinlich 'public DateTime GetDate', nicht' int' als Rückgabetyp. – Igor

+0

Sie brauchen das Jahr zumindest wegen Schaltjahren. Ich würde wahrscheinlich finden, welchen Wert 'GetDate (1,1)' zurückgeben sollte, dann add '21 * 7 + 3' Tage dazu. – Guvante

+0

Behandeln Sie "Wochen" als eine ganze Woche (Sonntag bis Samstag oder kulturelle Variation) oder als eine Reihe von 7 Tagen? h. Sollte 'GetDate (1, 1);' den ersten Sonntag (oder was auch immer) des Jahres zurückgeben, oder sollte es immer den 1. Januar zurückgeben? – Abion47

Antwort

3

Sie können nur die Anzahl der Tage vom Beginn des Jahres hinzu:

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

denke ich, eine einfache Art und Weise 1. JANUAR von Jahr zu nehmen wäre, und fügen Sie Anzahl der Tage,

0

zuerst die Woche des Jahres ist eine Kalenderberechnung und Gebietsabhängigkeit Wert, so müssen Sie berücksichtigen, wenn Sie die Woche geben ... So sind Sie sicher die Verwendung von s fehlt omething wie

CultureInfo.CurrentCulture.Calendar; 
Verwandte Themen