Hej på er. Jag är inte den som vet så mycket om vb.net men undrar om det finns något enkelt sätt att få ta i aktuellt veckonummer. Hittade den här funktionen när jag googlade: Det finns också möjlighet att få ut veckonummer med den inbyggda DatePart-funktionen: Jag vet att om jag säger att det finns en inbyggd så får jag på snoken inom 2 minuter då den vid ett fåtal tillfällen ger fel vecka. Men jag gör det ändå...Microsofts lösning finns här:aktuell vecka
Sv: aktuell vecka
http://konsulent.sandelien.no/VB_help/Week/ISO8601_VB.htm
' Author: Simen Sandelien
' Purpose: Calculate ISO 8601 week number for a date
' Created: 2005-05-11
' Input Parameters: The date for which ISO weeknumber should be calculated
' Returns: ISO Week number
' Using Monday as the first day of the week.
' This is VB.NET port of the C# code
' published at http://konsulent.sandelien.no/VB_help/Week/
Private Function Weeknumber_Entire4DayWeekRule(ByVal inDate As DateTime) As Integer
Const JAN As Integer = 1
Const DEC As Integer = 12
Const LASTDAYOFDEC As Integer = 31
Const FIRSTDAYOFJAN As Integer = 1
Const THURSDAY As Integer = 4
Dim ThursdayFlag As Boolean = False
' Get the day number since the beginning of the year
Dim DayOfYear As Integer = inDate.DayOfYear
' Get the numeric weekday of the first day of the
' year (using sunday as FirstDay)
Dim StartWeekDayOfYear As Integer = _
DirectCast(New DateTime(inDate.Year, JAN, FIRSTDAYOFJAN).DayOfWeek, Integer)
Dim EndWeekDayOfYear As Integer = _
DirectCast(New DateTime(inDate.Year, DEC, LASTDAYOFDEC).DayOfWeek, Integer)
' Compensate for the fact that we are using monday
' as the first day of the week
If StartWeekDayOfYear = 0 Then
StartWeekDayOfYear = 7
End If
If EndWeekDayOfYear = 0 Then
EndWeekDayOfYear = 7
End If
' Calculate the number of days in the first and last week
Dim DaysInFirstWeek As Integer = 8 - StartWeekDayOfYear
Dim DaysInLastWeek As Integer = 8 - EndWeekDayOfYear
' If the year either starts or ends on a thursday it will have a 53rd week
If StartWeekDayOfYear = THURSDAY OrElse EndWeekDayOfYear = THURSDAY Then
ThursdayFlag = True
End If
' We begin by calculating the number of FULL weeks between the start of the year and
' our date. The number is rounded up, so the smallest possible value is 0.
Dim FullWeeks As Integer = _
CType(Math.Ceiling((DayOfYear - DaysInFirstWeek) / 7), Integer)
Dim WeekNumber As Integer = FullWeeks
' If the first week of the year has at least four days, then the actual week number for our date
' can be incremented by one.
If DaysInFirstWeek >= THURSDAY Then
WeekNumber = WeekNumber + 1
End If
' If week number is larger than week 52 (and the year doesn't either start or end on a thursday)
' then the correct week number is 1.
If WeekNumber > 52 AndAlso Not ThursdayFlag Then
WeekNumber = 1
End If
'If week number is still 0, it means that we are trying to evaluate the week number for a
'week that belongs in the previous year (since that week has 3 days or less in our date's year).
'We therefore make a recursive call using the last day of the previous year.
If WeekNumber = 0 Then
WeekNumber = Weeknumber_Entire4DayWeekRule( _
New DateTime(inDate.Year - 1, DEC, LASTDAYOFDEC))
End If
Return WeekNumber
End Function
Sv:aktuell vecka
Dim Year As Integer= Microsoft.VisualBasic.DatePart(DateInterval.Year, DateTime.Today, Microsoft.VisualBasic.FirstDayOfWeek.Monday, FirstWeekOfYear.FirstFourDays)Sv: aktuell vecka
int week = System.Globalization.CultureInfo.CurrentCulture.Calendar.GetWeekOfYear(
DateTime.Now,
System.Globalization.CalendarWeekRule.FirstFourDayWeek,
DayOfWeek.Monday);
Så nu kan ni börja klaga...
Obs! Koden är C#, men bör väl se rätt lik ut i VB...