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)
Vi lascio un breve esempio d'utilizzo:

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.