2009-05-10 53 views
71

Tôi cần một chức năng mà có thể trả lại phần chênh lệch giữa hai ngày bên dưới là 24.Sự khác biệt giữa hai DateTimes C#?

DateTime a = new DateTime(2008, 01, 02, 06, 30, 00); 
DateTime b = new DateTime(2008, 01, 03, 06, 30, 00); 

Trả lời

135

Bạn có thể làm như sau:

TimeSpan duration = b - a; 

Có rất nhiều được xây dựng trong các phương pháp trong lớp khoảng thời gian để làm những gì bạn cần, ví dụ:

duration.TotalSeconds 
duration.TotalMinutes 

Thông tin khác có thể được tìm thấy here.

+0

TimeSpan span = x.ShiftEndTime.Subtract (x.ShiftStartTime) if (span.TotalHours == 24) {do ...} – abmv

15

Hãy thử như sau

double hours = (b-a).TotalHours; 

Nếu bạn chỉ muốn sự khác biệt giờ trừ sự khác biệt trong những ngày bạn có thể sử dụng sau đây

int hours = (b-a).Hours; 

Sự khác biệt giữa hai thuộc tính này chủ yếu được thấy khi chênh lệch thời gian lớn hơn 1 ngày. Thuộc tính Giờ sẽ chỉ báo cáo chênh lệch giờ thực tế giữa hai ngày. Vì vậy, nếu hai ngày khác nhau 100 năm nhưng xảy ra cùng một lúc trong ngày, giờ sẽ trở lại 0. Nhưng TotalHours sẽ trả về sự khác biệt giữa tổng số giờ xảy ra giữa hai ngày (876.000 giờ trong trường hợp này).

Sự khác biệt khác là TotalHours sẽ trả về số giờ phân số. Điều này có thể hoặc không thể là những gì bạn muốn. Nếu không, Math.Round có thể điều chỉnh nó theo ý thích của bạn.

+0

Vẫn sai. TotalHours là một đôi, trả về toàn bộ và phân số giờ. –

+2

@Vilx, không nhất thiết phải sai. Mục đích của OP là mơ hồ – JaredPar

+0

Câu trả lời đúng của nó cho câu hỏi, anh ta muốn kết quả là 24 mà nó sẽ là. Tất nhiên anh ta có thể tự mình làm tròn TotalHours một cách dễ dàng nếu đó là điều anh ta muốn. –

2

Bạn có lẽ tìm kiếm

int Difference = (a-b).Hours; 
+0

Nó mang lại cho tôi một sự trở lại 1? – abmv

+0

Thực sự cần phải là int Sự khác biệt = (a-b) .TotalHours; –

1
int hours = (int)Math.Round((b - a).TotalHours) 
0
TimeSpan X = b - a; 

X.totalhours có thể được sử dụng với nhiều hơn nữa đặc tính của TimeSpan.

0

Sự chênh lệch thời gian b/w với thời gian sẽ được hiển thị sử dụng phương pháp này.

private void HoursCalculator() 
    { 
     var t1 = txtfromtime.Text.Trim(); 
     var t2 = txttotime.Text.Trim(); 
     var Fromtime = t1.Substring(6); 
     var Totime = t2.Substring(6); 
     if (Fromtime == "M") 
     { 
      Fromtime = t1.Substring(5); 
     } 
     if (Totime == "M") 
     { 
      Totime = t2.Substring(5); 
     } 

     if (Fromtime=="PM" && Totime=="AM") 
     { 
      var dt1 = DateTime.Parse("1900-01-01 " + txtfromtime.Text.Trim()); 
      var dt2 = DateTime.Parse("1900-01-02 " + txttotime.Text.Trim()); 
      var t = dt1.Subtract(dt2); 
      //int temp = Convert.ToInt32(t.Hours); 
      //temp = temp/2; 
      lblHours.Text =t.Hours.ToString() + ":" + t.Minutes.ToString(); 

     } 
     else if (Fromtime == "AM" && Totime == "PM") 
     { 
      var dt1 = DateTime.Parse("1900-01-01 " + txtfromtime.Text.Trim()); 
      var dt2 = DateTime.Parse("1900-01-01 " + txttotime.Text.Trim()); 
      TimeSpan t = (dt2.Subtract(dt1)); 
      lblHours.Text = t.Hours.ToString() + ":" + t.Minutes.ToString(); 
     } 
     else 
     { 
      var dt1 = DateTime.Parse("1900-01-01 " + txtfromtime.Text.Trim()); 
      var dt2 = DateTime.Parse("1900-01-01 " + txttotime.Text.Trim()); 
      TimeSpan t = (dt2.Subtract(dt1)); 
      lblHours.Text = t.Hours.ToString() + ":" + t.Minutes.ToString(); 
     } 
    } 

sử dụng id lĩnh vực của bạn

var t1 chụp một giá trị của 04:00

kiểm tra mã này có thể hữu ích cho một ai đó.

Các vấn đề liên quan