Làm thế nào tôi có thể xây dựng chính xác một dấu thời gian của thời gian thực với độ chính xác đến mili giây?
Tôi nghi ngờ bạn có nghĩa là độ chính xác mili giây . DateTime
có rất nhiều độ chính xác, nhưng khá thô về độ chính xác. Nói chung, bạn không thể. Thông thường đồng hồ hệ thống (là nơi DateTime.Now
lấy dữ liệu của nó) có độ phân giải khoảng 10-15 ms. Xem bài đăng trên blog của Eric Lippert về độ chính xác và độ chính xác để biết thêm chi tiết.
Nếu bạn cần thời gian chính xác hơn thời gian này, bạn có thể muốn xem xét sử dụng máy khách NTP.
Tuy nhiên, không rõ ràng rằng bạn thực sự cần độ chính xác đến mili giây ở đây. Nếu bạn không quan tâm đến thời gian chính xác - bạn chỉ muốn hiển thị các mẫu theo đúng thứ tự, với độ chính xác "khá tốt", thì đồng hồ hệ thống sẽ ổn. Tôi khuyên bạn nên sử dụng DateTime.UtcNow
hơn là DateTime.Now
để tránh các vấn đề về múi giờ xung quanh việc chuyển đổi tiết kiệm ánh sáng ban ngày, v.v.
Nếu câu hỏi của bạn thực sự chỉ xoay quanh việc chuyển đổi DateTime
một chuỗi thành độ chính xác đến mili giây, tôi khuyên bạn nên sử dụng:
string timestamp = DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss.fff",
CultureInfo.InvariantCulture);
(Lưu ý rằng không giống như mẫu của bạn, điều này có thể sắp xếp và ít gây nhầm lẫn xung quanh việc nó có nghĩa là "tháng / ngày / năm" hay "ngày / tháng / năm".)