fredrikMedlem sedan dec. 19991 072 inlägg 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å...
...några tips?
fredrikMedlem sedan dec. 19991 072 inlägg Hittade nu det egentliga felet...
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.
GladhMedlem sedan maj 20012 812 inlägg Har du testat med att skapa ditt datum med:
DateTime myDateTime = new DateTime(2004,5,1);
Detta borde fungera oberoend av vilken Culture du använder.
- M
fredrikMedlem sedan dec. 19991 072 inlägg 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.