Devo utilizzare alcune date e orari da un database precedente. Sono rappresentati come stringhe. Le date sono gg/MM/aa. I tempi sono HH: mm.Conversione delle ore del Regno Unito (sia BST che GMT) rappresentate come stringhe in UTC (in C#)
Mi piacerebbe convertirli in UTC non appena li estraggo dal database. Sto lavorando su sistemi statunitensi, quindi ho bisogno di un tempo comune.
Il problema che sto affrontando è come convertirli in valori DateTime UTC. Posso fare l'analisi, ecc. Il vero problema che ho riguarda il fuso orario.
che sto cercando di utilizzare il seguente approccio:
DateTime ukTime = // Parse the strings in a DateTime value.
TimeZoneInfo timeZoneInformation = TimeZoneInfo.FindSystemTimeZoneById("GMT Standard Time");
DateTimeOffset utcTime = new DateTimeOffset(ukTime, timeZoneInformation.BaseUtcOffset);
Tuttavia, questo dà valori errati se la data è nel periodo di ora legale.
Posso usare "GMT Daylight Time" in quelle date, ma ciò richiede che io sappia quando è il passaggio. Sono sicuro che ci deve essere un modo meno laborioso.
Dato che non sto utilizzando una macchina con le impostazioni dell'ora del Regno Unito, non posso fare affidamento sull'ora locale.
Fondamentalmente, ho bisogno di qualcosa come:
// Works for both GMT (UTC+0) and BST (UTC+1) regardless of the regional settings of the system it runs on.
DateTime ParseUkTimeAsUtcTime(string date, string time)
{
...
}
Ho perlustrato i posti, ma non ho trovato nulla che ha affrontato direttamente. Sicuramente anche questo è un problema con EST, EDT, ecc.?
Ho bisogno di questo come un metodo TimeInTimeZone-> TimeInUTC generico. –