Khi tôi chuyển đổi giá trị datetimeoffset thành giá trị ngày giờ, có khả năng mất dữ liệu hay không. Từ tài liệu MSDN, việc chuyển đổi từ DateTimeOffset để datetime được đề cập như sau:DateTimeOffset để chuyển đổi DateTime - Mất dữ liệu
Thuộc tính DateTime thường được sử dụng để thực hiện DateTimeOffset để chuyển đổi DateTime. Tuy nhiên, nó trả về giá trị DateTime có thuộc tính Loại Loại không xác định. Điều này có nghĩa rằng bất kỳ thông tin nào về mối quan hệ giá trị của DateTimeOffset với UTC bị mất bởi chuyển đổi khi thuộc tính DateTime được sử dụng.
Để cho biết giá trị ngày giờ được chuyển đổi là thời gian UTC, bạn có thể truy xuất giá trị của thuộc tính DateTimeOffset.UtcDateTime. Nó khác với thuộc tính DateTime theo hai cách:
Nó trả về giá trị ngày giờ có thuộc tính Kind là Utc. Nếu giá trị thuộc tính Offset không bằng TimeSpan.Zero, nó chuyển đổi thời gian thành UTC.
tôi thấy các phương pháp sau đây để chuyển đổi datetime bù đắp để 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;
}
Bây giờ trong hệ thống của chúng tôi, chúng tôi đang chuyển đổi DateTimeOffset để datetime trong cách trên. Sau đó, chúng tôi muốn chuyển đổi datetime trở lại datetimeoffset.
Như một ví dụ:
DateTime dt = ConvertFromDateTimeOffset(datetimeOffset);
DateTimeOffset dofsetnew = new DateTimeOffset(dt);
Câu hỏi của tôi là liệu trong mọi trường hợp DateTimeOffset và dofsetnew thể khác nhau? Nếu vậy thì chuyển đổi sẽ là dữ liệu bị mất.