Quando converto un valore datetimeoffset in un valore datetime, c'è qualche possibilità di perdita di dati. dalla documentazione MSDN, la conversione da datetimeoffset a datetime è menzionato come segue:DateTimeOffset to DateTime conversion - Data Loss
La proprietà DateTime è più comunemente usato per eseguire DateTimeOffset alla conversione DateTime. Tuttavia, restituisce un valore DateTime la cui proprietà Kind non è specificata. Ciò significa che qualsiasi informazione su la relazione del valore DateTimeOffset con UTC viene persa dalla conversione quando viene utilizzata la proprietà DateTime.
Per indicare che un valore di DateTime convertito è l'ora UTC, è possibile recuperare il valore della proprietà DateTimeOffset.UtcDateTime. Si differenzia dalla proprietà DateTime in due modi:
Restituisce un valore DateTime cui proprietà Kind è Utc. Se il valore della proprietà Offset non è uguale a TimeSpan.Zero, converte l'ora in UTC.
vedo il seguente metodo per convertire datetime offset datetime:
static DateTime ConvertFromDateTimeOffset(DateTimeOffset dateTime)
{
if (dateTime.Offset.Equals(TimeSpan.Zero))
return dateTime.UtcDateTime;
else if (dateTime.Offset.Equals(TimeZoneInfo.Local.GetUtcOffset(dateTime.DateTime)))
return DateTime.SpecifyKind(dateTime.DateTime, DateTimeKind.Local);
else
return dateTime.DateTime;
}
Ora nel nostro sistema stiamo convertendo datetimeoffset in datetime nel modo sopra. In seguito vogliamo convertire il datetime di nuovo in datetimeoffset.
Per fare un esempio:
DateTime dt = ConvertFromDateTimeOffset(datetimeOffset);
DateTimeOffset dofsetnew = new DateTimeOffset(dt);
La mia domanda è se in nessun caso datetimeoffset e dofsetnew essere diverso? Se è così allora la conversione sarebbe dati di perdita.