Sto provando a creare un piccolo metodo che converte l'ora da un fuso orario a un altro. Ho pensato che sarebbe stato abbastanza semplice, ma quando lo distribuisco ottengo questo errore The UTC Offset of the local dateTime parameter does not match the offset argument.
La mia ipotesi è che è perché il server non si trova nello stesso fuso orario dell'utente che non è utile poiché questo sarebbe utilizzato da tutto il mondo.DateTimeOffset Errore: l'offset UTC di dateTime locali non corrisponde all'argomento di offset
public object ConvertDate(DateTime inputTime, string fromOffset, string toZone)
{
var fromTimeOffset = new TimeSpan(0, - int.Parse(fromOffset), 0);
var to = TimeZoneInfo.FindSystemTimeZoneById(toZone);
var offset = new DateTimeOffset(inputTime, fromTimeOffset);
var destination = TimeZoneInfo.ConvertTime(offset, to);
return destination.DateTime;
}
Dove fromOffset
è un numero, convertito al periodo dal fuso orario gli utenti e toZone
è il nome della zona stiamo conversione in. L'errore si verifica su questa riga var offset = new DateTimeOffset(inputTime, fromTimeOffset);
Qualche idea su come ottenere questo funzionamento?
quali sono i valori di esempio per 'inputTime, fromTimeOffset' che si sta passando –
un esempio potrebbe essere:' inputTime = 28/03/2016 06:09:49 PM' e 'fromTimeOffset = 13hrs' – Toxicable
Se ti sei mai ritrovato a dire "Ho pensato che sarebbe stato abbastanza semplice ..." per quanto riguarda il C# "DateTime", vale la pena leggere il celebre romanzo di Jon Skeet (in) "Cosa c'è che non va in DateTime?" post sulla nascita della libreria NodaTime: http://blog.nodatime.org/2011/08/what-wrong-with-datetime-anyway.html – rob3c