Hej, Följande retunerar veckonummer för ett visst datum... Den här kör jag med i mina applicationer. Hej! Varför använda en egensnickrad vbscriptkod i .NET när det finns inbyggt GetWeekOfYear (se min funktion ovan). Ok, då har skolan lärt ut fel för man har alltid hört att det "bara" finns 52 veckor på ett år ;) Det finns "bara" 52 veckor på ett år men vissa år kan ändå vecka 53, t.ex. i år. Det är skottår och 1 januari infaller på en lördag. Det innebär att mer än 3 dagar den veckan infaller i december och den räknas då till 2004 och blir då vecka 53. Patrik, din funktion verkar tyvärr inte fungera. Det blir fel under sista veckan år 2003 (alltså 29-31 dec 2003). Den veckan ska ha veckonummer 1, men VB.NET:s funktion (precis som VB6-funktionen) säger att det är vecka 53, vilket är fel. Jag tror att man måste skriva en egen funktion för att komma runt detta problem. Detta är en känd bug hos MS. Den veckan var 52 i USA, då deras veckor börjar med söndag... > Jag tror det är vart 7:e år som det blir en vecka mer per år.Veckonummer
Jag använder datetimepicker för att välja ut datum.
Problemet är att jag skulle vilja få ut vilket veckonummer som det datumet jag har valt ut har.
Det finns många olika metoder som får ut nästan allt utom veckonummer, så vitt jag har sett iallafall.
Någon som har något förslag på hur jag skall gå tillväga?Sv: Veckonummer
Dock kan den ibland, rätt ofta, retunera sista veckan på året som vecka 53 när det ska vara vecka 1...
Men det är bara att kolla om talet är större än 52 och sen ta det minus 52...
<code>
Dim Week As Integer = DatePart(DateInterval.WeekOfYear, Now, FirstDayOfWeek.Monday, FirstWeekOfYear.Jan1)
If Week > 52 Then Week -= 52
</code>
Mvh,
ThomasSv: Veckonummer
<code>
Public Function Week(ByVal dtmDate As Date) As Integer
Dim calNow As System.Globalization.Calendar = New System.Globalization.GregorianCalendar
Week = calNow.GetWeekOfYear(dtmDate, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday)
End Function
</code>Sv: Veckonummer
Här är en funktion i vbscript som jag använder för att ta fram veckonumret. Den fungerar perfekt
Function weeknumber(aDate)
// This function returns the week number for a given date. If no date is given, the current date is used.
// The function uses Norwegian rules for week numbering: Week no 1 is the first week with 4 or more days.
// Also note that Monday is the first day of the week.
// The function is testet using english Excel 97.
// Written by Sverre Beisland, 1999
// The rule goes like this:
// 1. Calculate number of days from Jan 1 until today.
// 2. Divide by 7 to get number of weeks.
// 3. If first day of year is between monday and thursday, add 1.
// 4. If dayname of today is "less than" dayname of Jan 1, add 1.
Dim today, jan1, aCount, Weeks
//' Get the date
If (aDate = "") Then
today = Date
Else
today = aDate
End If
// Get first day of year
jan1 = DateSerial(Year(today), 1, 1)
NextJan1 = DateSerial(Year(today) + 1, 1, 1)
// Calculate the number of weeks
Weeks = DateDiff("ww", jan1, today, vbMonday, vbFirstFourDays)
// Adjust according to weekday
If (WeekDay(jan1, vbSunday) < vbFriday) And (WeekDay(jan1, vbSunday) <> vbSunday) Then
Weeks = Weeks + 1
End If
If Weeks = 53 Then
If (WeekDay(NextJan1, vbSunday) < vbFriday) And (WeekDay(NextJan1, vbSunday) <> vbSunday) Then
Weeks = 1
End If
End If
weeknumber = Weeks
End FunctionSv: Veckonummer
Sv: Veckonummer
Skit samma, tar man bara bort kollen på vad veckan har för värde fungerar det helt perfekt =)
Mvh,
ThomasSv: Veckonummer
Sv: Veckonummer
/PelleSv: Veckonummer
/mickeSv: Veckonummer
Eftersom det är skottår var fjärde år (med vissa undantag) så blir det ju en dag extra dessa år. Det gör att det är ungefär var sjätte år som har en extra vecka.