08. februar 2006 - 09:39Der er
15 kommentarer og 1 løsning
Finde dato ud fra uge nummer ?
Hejsa,
Er det muligt ud fra et uge nummer at finde ugens 7 dages datoer. Forstået på den måde at jeg kender uge nummeret for et givent år og på den måde automatisk sætte datoerne for dagene.
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Test(2000, 1) Test(2001, 1) Test(2002, 1) Test(2003, 1) Test(2004, 1) Test(2005, 1) Test(2006, 1) End Sub
Public Function WeekNumber(ByVal year As Integer, ByVal mon As Integer, ByVal day As Integer) As Integer Dim a As Integer = (14 - mon) / 12 Dim y As Integer = year + 4800 - a Dim m As Integer = mon + 12 * a - 3 Dim JD As Integer = day + (153 * m + 2) / 5 + 365 * y + y / 4 - y / 100 + y / 400 - 32045 Dim d4 As Integer = (((JD + 31741 - JD Mod 7) Mod 146097) Mod 36524) Mod 1461 Dim L As Integer = d4 / 1460 Dim d1 As Integer = ((d4 - L) Mod 365) + L Return d1 / 7 + 1 End Function
Public Sub Test(ByVal year As Integer, ByVal week As Integer) Response.Write(year + "/" + week + ":") Dim dt As DateTime = New DateTime(year - 1, 12, 29) While WeekNumber(dt.Year, dt.Month, dt.Day) > 1 dt = dt.AddDays(1) End While While WeekNumber(dt.Year, dt.Month, dt.Day) < week dt = dt.AddDays(1) End While While WeekNumber(dt.Year, dt.Month, dt.Day) = week Response.Write(dt.ToString("dd-MMM-yyyy")) dt = dt.AddDays(1) End While End Sub
men jeg får en fejl der siger :
Input string is in a wrong format (eller noget i den stil)
prøv bare med denne While WeekNumber(dt.Year, dt.Month, dt.Day) = week Response.Write(dt.ToString("dd-MMM-yyyy")) dt = dt.AddDays(1) End While og intet andet
problemet ligger i forskellene mellem vb og c#. Koden virker som den skal i c#. Lavede en test i vb. Private Sub test(ByVal year As Integer, ByVal week As Integer) Dim dt As DateTime = New DateTime(year - 1, 12, 29) While WeekNumber(dt.Year, dt.Month, dt.Day) > 1 Response.Write(dt.ToString("dd-MMM-yyyy") + "n<br />") dt = dt.AddDays(1) End While While WeekNumber(dt.Year, dt.Month, dt.Day) < week Response.Write(dt.ToString("dd-MMM-yyyy") + "m<br />") dt = dt.AddDays(1) End While While WeekNumber(dt.Year, dt.Month, dt.Day) = week Response.Write(dt.ToString("dd-MMM-yyyy") + "b<br />") dt = dt.AddDays(1) End While End Sub
prøv at indsætte den på din side så kan du se at der er et alvorligt problem.
Public Shared Function WeekNumber(ByVal year As Integer, ByVal mon As Integer, ByVal day As Integer) As Integer Dim a, y, m, JD, d4, L, d1 As Integer a = (14 - mon) \ 12 y = year + 4800 - a m = mon + 12 * a - 3 JD = day + (153 * m + 2) \ 5 + 365 * y + y \ 4 - y \ 100 + y \ 400 - 32045 d4 = (((JD + 31741 - JD Mod 7) Mod 146097) Mod 36524) Mod 1461 L = d4 \ 1460 d1 = ((d4 - L) Mod 365) + L WeekNumber = d1 \ 7 + 1 End Function
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.