TimeZoneInfo: Da UTC a LocalTime con netcore

Durante lo sviluppo di App (o Azure Function come nel mio caso) l’utilizzo di TimeZoneInfo risulta davvero comodo quando hai la necessità di sapere quali sono i fusi orari disponibili e di sapere l’orario attuale relativo.

Grazie alle seguenti righe di codice -e come vedrete sono davvero poche- è possibile muoversi in tutti i fusi orari senza il minimo problema. *TimeZoneInfo * (cs)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16

foreach (var tzi in TimeZoneInfo.GetSystemTimeZones())
{

	TimeZoneResult zoneResult = new TimeZoneResult()
	{
		Id = tzi.Id,
		DisplayName = tzi.DisplayName,
		BaseUtcOffset = tzi.BaseUtcOffset,
		ConvertDateTime = TimeZoneInfo.ConvertTimeFromUtc(utc, tzi)
	};

	list.Add(zoneResult);

}

TimeZoneInfo: Serve davvero?

Si, la classe TimeZoneInfo occorre veramente perché semplifica davvero molto il lavoro. Ricordo nello sviluppo con Framework .NET inferiore alla versione 3.5 il “divertimento” nel passare da un fuso all’altro. Adesso è davvero un altro pianeta.

Come l’ho utilizzato? La mia esigenza era di convertire l’orario UTC ad Italiano. Operazione molto semplice grazie all’istruzione

TimeZoneInfo.ConvertTimeFromUtc(utc, tzi)

Il codice sorgente mostrato in precedenza è stato tratto da una Azure Function da me scritta. Grazie ad un HTTP Trigger si riceve in formato JSON l’elenco di tutti i fusi orari e la data / ora corrispottiva al TimeZoneInfo (variable tzi) partendo da DateTime.UtcNow (variabile utc).

Di seguito viene mostrato il ritorno in formato JSON della function sul fuso orario italiano. (json)

1
2
3
4
5
6
7
8

{
	"Id": "W. Europe Standard Time",
	"DisplayName": "(UTC+01:00) Amsterdam, Berlino, Berna, Roma, Stoccolma, Vienna",
	"BaseUtcOffset": "01:00:00",
	"ConvertDateTime": "2019-08-22T13:38:23.2789922"
}

GitHub: DevAndreaCarrattaIT.TimeZone

Se desideri il codice sorgente della Azure Function in versione completa, ti consiglio di visitare il mio GitHub nel repository " DevAndreaCarrattaIT.TimeZone