Hej på er, Tack, det fungerar ju men då måste jag skriva något i stil med Jag hoppas du inte skriver allt det varje gång. Gör en egen klass istället, typ: Nej jag skriverd et inte varje gång. Jag gjorde ungefär som du sa men eftersom en del andra saker spelar in i mitt fall gjorde jag lite annrolunda. Dels så ska olika tiszoner används beroende på var i koden man är och dessutom hämtar jag datum i Utc-tid från databasen.Tidszonstrubbel
måste tyvärr säga att tidszoner är en av mina svagaste sidor.
Det är så att jag har en webbapplikation på en server som har pacific time, vad nu det innebär. Nu undrar jag om det är möjligt att ställa om tidszonen globalt för min applikation på något sätt. Databasen ligger på samma server och samma tidszon. Jag använder inga timestamps eller liknande i SQLen så det är inga problem.
Problemet är när jag t.ex. vill använda DateTime.Now och får ut fel tid. Kan man på något sätt justera så att DateTime alltid skriver ut/hanterar tiden i rätt tidszon? Känns dumt att behöva ändra överallt i koden för något sånt. Speciellt när jag kör samma applikation lokalt som på servern. Då ser jag helst att tidszonen hämtas från t.ex. web.config eller databasen.Sv:Tidszonstrubbel
TimeZoneInfo.ConvertTime(DateTime.Now, timeZone) varenda gång jag ska skriva ut ett datum. Helst skulle jag vilja "virtuellt" ändra serverns tiszon (dock endast i min app).Sv:Tidszonstrubbel
public static class DateTimeLocal
{
public static DateTime Now
{
get
{
return TimeZoneInfo.ConvertTime(DateTime.Now, TimeZoneInfo.FindSystemTimeZoneById("W. Europe Standard Time"));
}
}
}
Då behöver du bara skriva <b>DateTimeLocal.Now</b> varje gång, för att få svensk tid.
Sv: Tidszonstrubbel
Så jag skrev en sån här metod:
public static DateTime SetTimezone(DateTime date)
{
date = TimeZoneInfo.ConvertTimeFromUtc(date, SIMA.Current.TimeZone);
return date;
}
SIMA.Current.TimeZone är satt på annat håll i koden såhär:
TimeSpan timeSpan = TimeSpan.FromHours(Convert.ToDouble(SIMA.Current.Site.TimeZone));
TimeZone = TimeZoneInfo.CreateCustomTimeZone("siteTz", timeSpan, "Sites Timezone", "Sites Timezone");
SIMA.Current.Site.TimeZone är en integer som hämtas från databasen. Det verkar fungera bra men frågan är vad som händer när det blir sommartid, Kommer den förstå när/att den ska ändra?