Conversia timpului de la un fus orar la altul

Diferențele de procesare între fusurile orare devin din ce în ce mai importante pentru toate aplicațiile care funcționează cu date și timp. Când rulați aplicația, nu puteți presupune că toate valorile de timp pot fi exprimate în ora locală, disponibilă din structura DateTime. De exemplu, o pagină web care afișează ora curentă în estul Statelor Unite va conține informații inexacte pentru utilizatorii din Asia de Est. Această secțiune explică modul de convertire a timpului dintr-un fus orar în altul și modul de conversie a valorilor DateTimeOffset cu suport pentru fusul orar limitat.







Timpul în format UTC este un standard de înaltă precizie, de timp atomic. Zonele de timp sunt exprimate ca compensări pozitive sau negative în raport cu timpul în format UTC. Astfel, timpul în format UTC oferă un tip de timp liber de fusul orar sau de fusul orar neutru. Utilizarea timpului UTC este recomandată atunci când este importantă compatibilitatea datei și orei între calculatoare. (Pentru mai multe informații și recomandări pentru utilizarea datei și orei, consultați Recomandarea privind utilizarea DateTime în cadrul .NET Framework.) Conversia zonelor orare individuale într-un timp în format UTC simplifică comparațiile de timp.

Puteți serializa structura DateTimeOffset pentru a reprezenta în mod unic un singur punct în timp. Deoarece obiectele DateTimeOffset stochează valoarea datei și orei împreună cu offsetul său față de timp în format UTC, ele reprezintă întotdeauna un punct de timp specific relativ la timpul UTC.







Cea mai simplă modalitate de a converti timpul în format UTC este să apelați metoda statică (partajată în Visual Basic) a metodei TimeZoneInfo. ConvertTimeToUtc (DateTime). Conversia exactă efectuată prin această metodă depinde de valoarea proprietății Kind a parametrului dateTime. așa cum se arată în tabelul următor.

Puteți converti timpul dintre oricare două fusuri orare utilizând oricare dintre următoarele două metode statice (partajate în Visual Basic) ale clasei TimeZoneInfo.

Parametrii acestei metode sunt valoarea de dată și oră pe care doriți să o convertiți, obiectul TimeZoneInfo. reprezentând fusul orar al datei și orei și obiectul TimeZoneInfo. Acesta reprezintă fusul orar la care doriți să convertiți valoarea dată și oră.

Parametrii acestei metode sunt valoarea de dată și oră pe care doriți să o convertiți, ID-ul fusului orar pentru valoarea de dată și oră și ID-ul fusului orar la care doriți să convertiți valoarea dată și oră.

Ambele metode necesită ca proprietatea Kind a valorii de dată și oră care urmează să fie convertită să corespundă cu obiectul TimeZoneInfo sau ID-ul fusului orar reprezentând fusul orar. În caz contrar, este aruncată o ArgumentException. De exemplu, dacă proprietatea Kind a valorii de dată și oră este DateTimeKind.Local. atunci va apărea o excepție dacă obiectul TimeZoneInfo. care este trecut ca parametru de metodă, nu este egal cu TimeZoneInfo.Local. O excepție va apărea și în cazul în care identificatorul trecut ca parametru de metodă nu este egal cu TimeZoneInfo.Local.Id.

Următorul exemplu folosește metoda ConvertTime pentru a converti de la ora standard din Hawaii la ora locală.







Trimiteți-le prietenilor: