2015-08-19 5 views
6

SO Sono nuovo di NodaTime e sto provando a usarlo per memorizzare le informazioni sul fuso orario usando l'oggetto DateTimeZone.Come si ottiene l'elenco di stringhe in tzdb utilizzato come inizializzatore fuso orario?

Mi sono imbattuto in esempi di guida utente ecc. Che mi danno un bel oggetto DateTimeZone da tzdb, che è ottimo.

var london = DateTimeZoneProviders.Tzdb["Europe/London"]; 

La mia domanda è - come ottengo una lista di stringhe di fuso orario ("Europa/Londra") che vengono utilizzati nel tzdb. Mi sono guardato intorno, da nessuna parte per trovare. C'è una lista standard da qualche parte a cui posso riferirmi? Come funziona? ex. - qual è la stringa che dovrei passare per EST?

Grazie!

risposta

13

Per recuperare gli ID del fuso orario a livello di programmazione, utilizzare la proprietà Ids in IDateTimeZoneProvider. Ad esempio, per trovare tutte le zone:

var provider = DateTimeZoneProviders.Tzdb; 
foreach (var id in provider.Ids) 
{ 
    var zone = provider[id]; 
    // Use the zone 
} 

Per ora della costa orientale, probabilmente si vuole America/New_York.

Più in generale, questi identificatori sono quelli di IANA e sono quelli utilizzati nella maggior parte dei sistemi non Windows.

+0

E l'elenco stesso può essere scaricato da https://www.iana.org/time-zones? –

+0

@EndyTjahjono: contiene i dati crudi del fuso orario. Non conosco un modo molto semplice per ottenere tutti gli ID da lì senza molti altri dati. –

Problemi correlati