Làm thế nào đến đoạn code sau (trong C#) trả về false:DateTime.Ticks, DateTime.Equals và múi giờ
DateTime d = DateTime.Now;
d.Ticks == d.ToUniversalTime().Ticks; // false
tôi mong đợi sự ve của một DateTime được dựa trên thời gian tính theo giờ UTC. Trang MSDN trên DateTime.Ticks đề cập nói
Giá trị tài sản này đại diện cho số của khoảng 100 nano giây đã trôi qua kể từ 12:00:00 nửa đêm, 01 tháng 1, 0001, đại diện cho DateTime.MinValue. Nó không bao gồm số lượng ve được quy cho giây nhảy vọt.
Nửa đêm vào ngày 1 tháng 1, 0001 .. trong múi giờ nào?
Tại sao DateTime.Ticks sẽ phụ thuộc vào múi giờ?
Tôi đoán rằng thực tế là Bọ ve là khác nhau là tại sao đoạn code sau đây cũng trả về false
DateTime d = DateTime.Now;
d == d.ToUniversalTime(); // false
MSDN doc trên DateTime.Equals đề cập
t1 và t2 đều bình đẳng nếu sở hữu Bọ ve của họ giá trị bằng nhau. Các giá trị tài sản Kind của chúng không được xem xét trong bài kiểm tra bình đẳng.
Kỳ vọng của tôi là DateTime.Ticks sẽ bằng nhau, bất kể múi giờ.
Tôi mong đợi hai khoảnh khắc trong thời gian bằng nhau bất kể họ đã xảy ra múi giờ nào. Kỳ vọng của tôi có sai không?
Lưu ý rằng bạn có thể sử dụng DateTimeOffset (http://msdn.microsoft.com/en-us/library/system.datetimeoffset.op_equality.aspx) so sánh thời điểm trong khi so sánh hai trường hợp. –
@ChrisShaffer Cảm ơn, tôi nghĩ rằng đây là những gì tôi nên sử dụng vì những gì tôi đang tìm kiếm là những khoảnh khắc chính xác trong thời gian và không thực tế "ngày". – GuiSim