All'interno del .NET Framework 3.5 è stata inserita una nuova classe veramente utile, a supporto della classe TimeZone, per offrire delle funzionalità riguardo la gestione di date su differenti zone geografiche. La classe in questione è la TimeZoneInfo, che appunto rappresenta una time zone del mondo.
Attraverso questa classe possiamo quindi:
- controllare quale time zone è settata di default sulla macchina,
- prelevare l'elenco delle time zone installate
- , creare nuove time zone personalizzate,
- convertire date secondo una particolare time zone,
- controllare l'ambiguità o la validità di una particolare data a fronte di una particolare time zone, accedere alle informazioni di base di ogni time zone (quali il nome, l'identificativo e il numero di ore di offset rispetto all'UTC)
protected void Page_Load(object sender, EventArgs e)
{
TimeZoneInfo locale = TimeZoneInfo.Local;
lblCurrentTimeZone.Text = locale.DisplayName;
foreach (TimeZoneInfo zone in TimeZoneInfo.GetSystemTimeZones())
lstBoxTimeZones.Items.Add(new ListItem(zone.DisplayName, zone.Id));
lblDate.Text = String.Format("Data locale: {0}<br />Data in UTC: {1}",
DateTime.Now,
TimeZoneInfo.ConvertTimeToUtc(DateTime.Now, locale));
}
Io trovo questa classe particolarmente utile, in quanto prima della sua introduzione all'interno del .NET Framework, tali operazioni potevano essere eseguite solamente attraverso delle chiamate dirette alle API di windows.