una ultimo semanas semana obtener numero mes getweekofyear fecha c# vb.net datetime vb6 calendar

ultimo - Calcule la fecha de inicio y fin de una semana dado el número de semana y el año en C#(según la especificación ISO)



obtener numero de semanas de un mes c# (7)

Esto debería funcionar. Lo he usado para informar en el pasado. Estoy de acuerdo en que no es muy bonito:

DateTime GetWeekStartDate(int year, int week) { DateTime jan1 = new DateTime(year, 1, 1); int day = (int)jan1.DayOfWeek - 1; int delta = (day < 4 ? -day : 7 - day) + 7 * (week - 1); return jan1.AddDays(delta); }

Eso calcula la fecha de inicio para una cierta semana. El final DateTime es, obviamente, 7 días más tarde (exclusivo).

Puede encontrar este código mío útil. Apenas está documentado, pero implementa algunas otras operaciones en la estructura WeekAndYear que define. Mucho espacio para mejorar. En particular, define los operadores < y > , pero no otros, lo cual es bastante malo ... pero debería comenzar.

Portando a VB6 sin embargo ... Hmm, tal vez no: P

Necesito generar un informe que muestre las 52 semanas de un año (o 53 semanas, como lo han hecho algunos años) y sus fechas de inicio y finalización. ¡Hay una especificación ISO para hacer esto pero parece terriblemente complicado! Espero que alguien sepa de una manera de hacerlo en C # o Visual Basic (en realidad es para Visual Basic 6 pero intentaré portarlo)



utilice el método Calendar.GetWeekOfYear para obtener la semana del datetime actual, el resto debe ser trivial.

Para vb6 es menos trivial, lo mejor es encontrar una buena biblioteca que haga el trabajo por usted.



Puede usar el método Calendar.GetWeekOfYear para obtener el número de semana de una fecha, con el valor CalendarWeekRule.FirstFourDayWeek para especificar cómo se determinan las semanas, y DayOfWeek.Monday para especificar el primer día de la semana. Eso sigue la especificación ISO.

Ejemplo:

int week = Calendar.GetWeekOfYear(DateTime.Today, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday);

Para obtener la primera fecha de la primera semana del año, puede comenzar desde el 4 de enero y regresar hasta que encuentre el lunes:

DateTime t = new DateTime(DateTime.Today,Year, 1, 4); while (t.DayOfWeek != DayOfWeek.Monday) t = t.AddDays(-1);


Estas funciones cubren mis requisitos (adaptados para ASP Classic, por lo tanto, a tipos de datos). Espero que ayuden a otros también ...

Function WeekNumber(dDate) Dim d2 d2 = DateSerial(Year(dDate - WeekDay(dDate - 1) + 4), 1, 3) WeekNumber = Int((dDate - d2 + WeekDay(d2) + 5) / 7) End Function Function YearStart(iWhichYear) Dim iWeekDay Dim iNewYear iNewYear = DateSerial(iWhichYear, 1, 1) iWeekDay = (iNewYear - 2) Mod 7 If iWeekDay < 4 Then YearStart = iNewYear - iWeekDay Else YearStart = iNewYear - iWeekDay + 7 End If End Function Function WeeksInYear(iYear) WeeksInYear = WeekNumber(DateAdd("d", -1, YearStart(iYear + 1))) End Function Function WeekStart(iYear, iWeek) WeekStart = DateAdd("ww", iWeek - 1, YearStart(iYear)) End Function Function WeekEnd(iYear, iWeek) WeekEnd = DateAdd("d", 6, DateAdd("ww", iWeek - 1, YearStart(iYear))) End Function


Esto te dará el comienzo de la semana actual

dateAdd(DateAdd(DateInterval.Day, (Now.Day * -1), Now)

Para obtener el final de la semana agregue 7 días al inicio de la semana