På en sida använder jag olika "CurrentCulture" och "CurrentUICulture", beroende på en användares val.
Därefter hämtar jag ett värde ifrån en kalender. Värdet på datumet blir vid "2004-01-08" (och "it-IT" som culture):
#1/8/2004#
På ett annat stället använder jag en SQLDataReader och hämtar där ett datumfält ifrån databasen med ".GetDateTime()".
Värdet för datumet "2004-01-05" blir då:
#5/1/2004#
Alltså sätts de tvärtom! De olika uthämtningarna görs i olika "sidor", den första hämtas i en aspx-sida och den andra hämtas i min BL-klass.
I ASPX-sidans topp anger jag alltså:
Threading.Thread.CurrentThread.CurrentCulture
Threading.Thread.CurrentThread.CurrentUICulture
Men detta verkar inte hänga med hela vägen, eller så formateras datumet helt enkelt annorlunda.
Jag har försökt att trixa till det med bla:
Dim NewDate as DateTime = cType(CALENDER.SelectedDate.Tostring("d", New CultureInfo("sv-SE")), DateTime)
Men det hjälper inte...Det blir samma formatering ändå...
Datumen som visades var i själva verket ett annat datum, "2004-05-01" istället för "2004-01-05". Problemet ligger i att jag inte kan få SQL-servern att förstå att det är den 5 Januari jag vill ha, och inte den 1 Maj.
Jag skickar i nuläget datumet som en parameter till en SP, och hur jag än försöker så blir det felformaterat.
Japp, det har jag provat. Problemet ligger som sagt inte i .NET. För oavsett om den formaterar datumet som
#1/5/2004# eller #5/1/2004# så "vet" den att det är 5e januari 2004.
Problemet låg som sagt när jag skulle skicka datumet som en parameter till SQL-servern. SQL-servern tolkar datumet som:
"dag/månad/år".
En temporär lösning jag gjort nu är att jag vid tilldelning av parametrarna gör:
DAL.AddParameter("@Param", Mydate.ToString("d", new CultureInfo("sv-SE"))
Och då funkar allt som det ska. Detta påvisar ju även att .NET även "vet" vilket datum det gäller.
259 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25