Nếu bạn biết các DateTime
chứa một giá trị tính theo giờ UTC, bạn có thể sử dụng the following:
DateTime iKnowThisIsUtc = whatever;
DateTime runtimeKnowsThisIsUtc = DateTime.SpecifyKind(
iKnowThisIsUtc,
DateTimeKind.Utc);
DateTime localVersion = runtimeKnowsThisIsUtc.ToLocalTime();
Ví dụ, trong ứng dụng hiện tại của tôi, tôi tạo dấu thời gian trong cơ sở dữ liệu của tôi với SQL utcnow
, nhưng khi tôi đọc chúng vào ứng dụng C# của mình, Kind
proeprty luôn là Unknown
. Tôi đã tạo ra một hàm bao bọc để đọc dấu thời gian, cố tình đặt Kind
thành Utc
và sau đó chuyển đổi nó thành giờ địa phương - về cơ bản như trên.
Lưu ý rằng DateTime.ToLocalTime()
chỉ không ảnh hưởng đến giá trị nếu một (hoặc cả hai) những điều sau đây giữ:
Kind
Khách sạn DateTime
's là DateTimeKind.Local
- múi giờ địa phương của bạn là như vậy mà "không thay đổi "là chuyển đổi chính xác
Tôi nghĩ chúng ta có thể giả định điểm thứ hai là không đúng sự thật. Do đó có vẻ như thuộc tính của iKnowThisIsUtc
được đặt thành Local
rồi. Bạn cần phải tìm ra lý do tại sao bất cứ điều gì là cung cấp cho bạn với những DateTime
s nghĩ rằng họ là địa phương.
bạn biết gì múi giờ bạn đang ở trong – elyashiv