Skip to main content

Posts

Showing posts with the label date time

How to get a valid daylight saving time - Part 2

Intr-un post anterior am povestim putin despre TimeZone si daily light saving. Prin metoda "IsDaylightSavingTime" a unui TimeZoneInfo spuneam ca se poate verifica daca pentru o anumita data avem ora de vara sau de iarna. Lucrurile se complica putin cand nu cunoastem TimeZoneInfo pe care il are clientul. In acest caz, pe baza orei trebuie sa identificam pe ce time zone se afla clientul. Acest lucru nu se poate determina in totalitate, dar putem identifica un time zone care partial asemanator. Un obiect de tip TipZoneInfo contine metoda "GetAdjustmentRules" care ne returneaza o lista de reguli care se folosesc pentru a ajusta ora (de exemplu ora de vara sau de iarna). Fiecare regula defineste perioda de inceput si de sfarsit dar din pacate perioada nu este definita la nivel de zi ci doar de luna. De exemplu ni se specifica ca in luna martie se termina perioada in care se aplica regula, dar nu se specifica data exacta cand aceasta se termina. A doua problema apare in ...

How to get a valid daylight saving time

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. 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 ...

Calcule cu DateTime

Trebuia sa afisez durata intre un startDate si un endDate. Aceasta trebuia sa fie afisata sub forma: Durata este de: [years], [months], [days] Problema a aparut cand trebuia sa determin daca 28,29,30 sau 31 de zile reprezinta o luna? Problema este ca nu am putut determina numarul de zile pentru o luna. Daca as alege 28, as ajunge ca sa calculez ca luna ianuarie contine si ea 28 de zile, cea ce este complet eronat. O alta situație in care pot sa ajung este sa aleg durata unei luni de 30( sau 29) de zile si atunci as ajunge intr-o situatie similara pentru luna februarie. Problema apare in jurul date de 28 februarie. Rotunjirile care se fac in jurul acestei date(+/- o unitate de masura - care poate sa fie zi sau luna). Valoarea de tip TimeStamp sau DateTime pe care o adun sau o scad nu reprezinta mereu o valoarea buna, deoarece o luna poate sa aibe 28,29,30 sau 31 de zile. Problema a apărut cînd am ajuns pe cazurile de mai jos: 30/01/2011 + 0 luna = 28/02/2011 29/01/2011 + 0 luna = 28/02...