Purtroppo al momento non v'è alcuna funzionalità standard di farlo.
Consente di verificare (utilizzando il riflettore) come funziona il metodo TimeZoneInfo.FindSystemTimeZoneById(). Ci vuole solo uno dei valori da campo s_systemTimeZones:
private static Dictionary<string, TimeZoneInfo> s_systemTimeZones
{
get
{
if (s_hiddenSystemTimeZones == null)
{
s_hiddenSystemTimeZones = new Dictionary<string, TimeZoneInfo>();
}
return s_hiddenSystemTimeZones;
}
set
{
s_hiddenSystemTimeZones = value;
}
}
Questo campo memorizza tutti disponibili TimeZoneInfo-s. E quando chiami FindSystemTimeZoneById (id) ha appena preso un certo valore dal dizionario precompilato. Non so quando questo dizionario viene inizializzato e quali valori utilizza per l'inizializzazione. Ma il tizio da this thread ha detto che TimeZoneInfo utilizza valori dal registro: HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Windows NT \ CurrentVersion \ Fusi orari
Il modo più ovvio è creare il dizionario del dizionario e riempirlo di valori. Qualcosa di simile a questo:
Dictionary<string, TimeZoneInfo> dictionary = new Dictionary<string, TimeZoneInfo>();
TimeZoneInfo info = new TimeZoneInfo("ID", new TimeSpan(0, 1, 0, 0), "SomeCultureName", "Some Standard Time", "Some Daylight Time", null, true);
dictionary.Add("Some time", info);
Ma c'è un altro problema: TimeZoneInfo costruttore è privato. Quindi, se si desidera utilizzare FindSystemTimeZoneById() e ConvertTimeFromUtc() funzionalità allora si dovrebbe implementare da molto zero. Creare una classe che rappresenta il fuso orario, creare e compilare dizionario di questa classe con fusi orari informazioni e così via ...
Non una buona notizia, lo so. Ma spero che sarà utile per voi :)
fonte
2011-01-06 23:27:56
Hmm. Non ho effettivamente utilizzato il download IANA - ho appena copiato il contenuto di/etc/zoneinfo dalla macchina Linux più vicina sulla nostra rete. Risulta che i file IANA sono in formato testo e devi eseguirli attraverso un compilatore di fuso orario ("zic"). Anche la sorgente "zic" si trova sulla stessa pagina IANA; ma suppongo che sia più facile usare i binari se si ha una macchina Linux da cui attingere. –
Ecco una [versione su GitHub] (https://github.com/mono/mono/tree/master/mcs/class/System.Core/System). –