Kiểm tra chênh lệch tính bằng giây giữa hai thời điểm


100

Xin chào tất cả Tôi hiện đang làm việc trong một dự án mà khi một sự kiện nhất định xảy ra, thông tin chi tiết về sự kiện đó bao gồm cả thời gian sự kiện đó xảy ra được thêm vào một mảng danh sách.

Khi phương thức kết thúc, tôi chuyển danh sách cho một phương thức khác để kiểm tra các giá trị của nó. Trước khi thực hiện vòng lặp, tôi kiểm tra thời gian hiện tại của PC và tôi cần kiểm tra xem chênh lệch giữa thời gian được lưu trong mảng danh sách và thời gian hiện tại có lớn hơn 5 giây hay không.

Tôi sẽ đi đâu để tới đó.

Câu trả lời:


264

Giả sử dateTime1dateTime2DateTimecác giá trị:

var diffInSeconds = (dateTime1 - dateTime2).TotalSeconds;

Trong trường hợp của bạn, bạn sẽ sử dụng DateTime.Nowlàm một trong các giá trị và thời gian trong danh sách là giá trị khác. Hãy cẩn thận với thứ tự, vì kết quả có thể âm nếu dateTime1sớm hơn dateTime2.


3
Cảm ơn, bằng cách này, var sẽ kết thúc được đôi: TotalSeconds
Loaderon

3
Cảm ơn ... Tôi vừa bị lỗi khi sử dụng (Mili giây) khi tôi thực sự nên sử dụng (TotalMilliseconds) ... ouch.
andrew pate


15

Phiên bản này luôn trả về số giây chênh lệch dưới dạng số dương (cùng kết quả với giải pháp của @ freedeveloper):

var seconds = System.Math.Abs((date1 - date2).TotalSeconds);

4

Tôi sử dụng điều này để tránh khoảng âm.

var seconds = (date1< date2)? (date2- date1).TotalSeconds: (date1 - date2).TotalSeconds;

4
Math.AbsThay vào đó, hãy sử dụng mã này ít dễ đọc và hiệu quả hơn là chỉ sử dụng câu trả lời ở trên.
ProgramFast
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.