La nostra azienda gestisce un'applicazione SaaS in cui gli utenti effettuano l'accesso da tutto il mondo (anche se principalmente negli Stati Uniti). Memorizziamo tutte le informazioni relative al nostro tempo come UTC, ma abbiamo bisogno di visualizzare gli orari usando l'ora locale. L'applicazione è basata sul Web e vorremmo "rilevare automaticamente" il fuso orario dell'utente utilizzando javascript per determinare le loro correzioni UTC durante i vari periodi dell'anno. Le informazioni sull'offset dell'utente verranno passate al nostro server nella prima richiesta e il server cercherà tutti gli Fusi orari di cui è a conoscenza e vedrà quali fusi orari validi corrispondono.
Mi piacerebbe utilizzare l'oggetto TimeZoneInfo integrato, ma capisco che
TimeZoneInfo.GetSystemTimeZones();
si basa sulle impostazioni del registro del server. Al momento disponiamo di 18 server Web con bilanciamento del carico che ospitano il nostro livello di servizio WCF, e I credo il nostro team di TechOps è attento a garantire che tutti i server vengano corretti con lo stesso service pack in qualsiasi momento.
Devo anche prestare particolare attenzione ai vari Fusi orari degli Stati Uniti, in particolare Pacifico, Montagna, Centrale e Orientale. Posso supporre che il campo ID basato su stringhe non cambi presto? Ad esempio, se chiamo
TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time")
Voglio che venga restituito l'oggetto TimeZoneInfo appropriato.
Quindi alcune domande:
- Qual è il modo migliore per gestire i fusi orari, soprattutto quando si tratta delle regole che cambiano (le regole del fuso orario degli Stati Uniti sono state modificate nel 2006) e la determinazione degli offset. Dovrei provare qualcos'altro? Tieni presente che il team del prodotto non vuole che l'utente debba selezionare il proprio fuso orario e che stia bene con i fusi orari che vengono segnalati in modo impreciso in determinate condizioni (ad es. Se l'utente è in Messico, va bene riportarlo come " Pacific Standard Time "invece del più accurato" Pacific Standard Time (Messico) ".
- Se presumo che tutti i server Web con carico bilanciato eseguano sempre la stessa versione del sistema operativo e il livello di patch, posso presumere che otterrò risultati coerenti?
- Ci sono altre cose che devo prendere in considerazione?