Vergleichen von Datumsangaben mit Woche, Monat und Jahr mit .NET - c #, .net, date, datetime

Ich mache gerade diesen Weg, um die Woche des Jahres in Millisekunden umzuwandeln.

DateTime source = new DateTime(2014, 1, 1);
int weeks = 14; //first week of April
**int month = 4; //I don"t use it yet**
int delta = 7 + DayOfWeek.Wednesday - source.DayOfWeek;
if (delta >= 7)
delta -= 7;
source = source.AddDays((weeks- 1) * 7 + delta);
double timeMs = (source - new DateTime(1970, 1, 1)).TotalMilliseconds;

Allerdings stieß ich auf Probleme, dass eine Woche zu zwei Monaten gehören kann, genau wie die 14. Woche von 2014 zu März und April.

Zum Beispiel erhalte ich diese Einträge:

week: 14, month: 3, year: 2014, total: 13

week: 14, month: 4, year: 2014, total: 98

So wie ich es mache, bekomme ich in ms die gleiche Zeitmarkefür beide Einträge, was gut ist, um ein Diagramm der Wochenentwicklung zu erstellen, aber es ist schlecht, wenn ich Daten nach Monat und Woche gleichzeitig filtern möchte (Beispiel: von Woche 14 von April bis Woche 15 von April -> Ich tue nicht Ich möchte diese 13 Geräte mit der 14. Aprilwoche in Verbindung bringen)

Also meine Frage ist: eine Woche im Jahr gegeben, Monat und Jahr gibt es einen Weg (Bibliothek oder nicht), zwei Daten genau mit diesen Feldern zu vergleichen?

PS: Am Front-End verwende ich moment.js, um die Woche des Jahres, Monats und Jahres eines bestimmten Datums zu erhalten.

Danke trotzdem.

Antworten:

1 für die Antwort № 1

Du kannst den ... benutzen Woche Klasse der Zeitraumbibliothek für .NET:

// ----------------------------------------------------------------------
public void WeekOfYear()
{
Week week = new Week( 2014, 14 );
Console.WriteLine( "Week: {0}", week );
Console.WriteLine( "Year: {0}, Month: {1}", week.Start.Year, week.Start.Month );
Console.WriteLine( "NextWeek: {0}", week.GetNextWeek() );
} // WeekOfYear

0 für die Antwort № 2

Sie können die Kalenderklasse verwenden, um die Wochennummer zu erhalten http://msdn.microsoft.com/en-us/library/system.globalization.calendar(v=vs.110).aspx