Câu trả lời:
Ví dụ sau đây cho thấy cách thực hiện việc này:
DateTime a = new DateTime(2010, 05, 12, 13, 15, 00);
DateTime b = new DateTime(2010, 05, 12, 13, 45, 00);
Console.WriteLine(b.Subtract(a).TotalMinutes);
Khi thực hiện điều này sẽ in "30" vì có chênh lệch 30 phút giữa ngày / lần.
Kết quả DateTime.Subtract(DateTime x)
là một Đối tượng TimeSpan cung cấp các thuộc tính hữu ích khác.
TotalMinutes
! (không Minutes
)
Bạn muốn TimeSpan
cấu trúc:
TimeSpan diff = dateTime1 - dateTime2;
Một đối tượng TimeSpan biểu thị một khoảng thời gian (khoảng thời gian hoặc thời gian đã trôi qua) được đo bằng số ngày dương hoặc âm của ngày, giờ, phút, giây và phân số của giây. Cấu trúc TimeSpan cũng có thể được sử dụng để biểu thị thời gian trong ngày, nhưng chỉ khi thời gian không liên quan đến một ngày cụ thể.
Có nhiều phương pháp khác nhau để lấy lại ngày, giờ, phút, giây và mili giây từ cấu trúc này.
Nếu bạn chỉ quan tâm đến sự khác biệt thì:
TimeSpan diff = Math.Abs(dateTime1 - dateTime2);
sẽ cung cấp cho bạn sự khác biệt tích cực giữa các lần bất kể thứ tự.
Nếu bạn vừa có thành phần thời gian nhưng thời gian có thể được chia cho nửa đêm thì bạn cần thêm 24 giờ vào khoảng thời gian để có được sự khác biệt thực tế:
TimeSpan diff = dateTime1 - dateTime2;
if (diff < 0)
{
diff = diff + TimeSpan.FromDays(1);
}
NẾU chúng là cả hai giá trị thời gian ngày UTC bạn có thể làm TimeSpan diff = dateTime1 - dateTime2;
Nếu không, cơ hội của bạn để có được câu trả lời chính xác trong mọi trường hợp có thể là bằng không.
var startDate = new DateTime(2007, 3, 24);
var endDate = new DateTime(2009, 6, 26);
var dateDiff = endDate.Subtract(startDate);
var date = string.Format("{0} years {1} months {2} days", (int)dateDiff.TotalDays / 365,
(int)(dateDiff.TotalDays % 365) / 30, (int)(dateDiff.TotalDays % 365) / 30);
Console.WriteLine(date);
Console.WriteLine((a - b).ToString(@"hh\:mm\:ss"))
. Xem: Định dạng thời gian tùy chỉnh MSDN