Foarte multi dezvoltatori s-au lovit de problema legate de datetime si offsetul timpului in functie de locatie.
Daca avem o data si vrem sa verificam daca pentru aceasta data daylight saving este activ sau nu putem sa verificam folosind metoda IsDaylighSavingTime.
Odata ce ne-am setat current culture pe cultura dorita am avea si daylight saving time setat pentru zona respectiva.
De ce se intampla acest lucru? Este destul de simplu, o cultura nu are o singur time-zone. Poate sa aibe 2,3 chiar si mai multe time-zone-uri.
Pentru a putea face verificarea este nevoie sa stim exact cu ce time-zone lucram si sa il setam explicit. O lista cu toate time-zone-urile se poate obtine prin metoda TimeZoneInfo.GetSystemTimeZones().
Daca avem o data si vrem sa verificam daca pentru aceasta data daylight saving este activ sau nu putem sa verificam folosind metoda IsDaylighSavingTime.
TimeZoneInfo.Local.IsDaylightSavingTime(DateTime.Parse("01/04/2012"))
Aceasta metoda o sa ne returneze TRUE daca daylight saving este activ pentru data respectiva. Trebuei avut grija ca in functie de locatia de pe glob dayling saving poate sa inceapa sau sa se termine intr-o zi diferita.Odata ce ne-am setat current culture pe cultura dorita am avea si daylight saving time setat pentru zona respectiva.
Thread.CurrentThread.CurrentCulture = myCulture;
Thread.CurrentThread.CurrentUICulture = myCulture;
TimeZoneInfo.Local.IsDaylightSavingTime(DateTime.Parse("01/04/2012"))
Dar o sa avem o surpriza neplacuta. TimeZoneInfo.Local o sa ne returneze timezone-ul local a masinii si nu cel pe care noi l-am setat prin intermediul culture-ului.De ce se intampla acest lucru? Este destul de simplu, o cultura nu are o singur time-zone. Poate sa aibe 2,3 chiar si mai multe time-zone-uri.
Pentru a putea face verificarea este nevoie sa stim exact cu ce time-zone lucram si sa il setam explicit. O lista cu toate time-zone-urile se poate obtine prin metoda TimeZoneInfo.GetSystemTimeZones().
Comments
Post a Comment