2012-04-24 44 views
23

Hãy nói rằng chúng tôi cóLàm thế nào để so sánh thời gian một phần của datetime

DateTime t1 = DateTime.Parse("2012/12/12 15:00:00.000"); 

DateTime t2 = DateTime.Parse("2012/12/12 15:03:00.000"); 

Làm thế nào để so sánh nó trong C# và nói thời gian đó là "muộn hơn"?

+2

Câu hỏi của bạn không phù hợp với tiêu đề câu hỏi của bạn. Bạn có muốn so sánh DateTime hay chỉ phần thời gian của DateTime không? –

Trả lời

55

Bạn có thể sử dụng TimeOfDay sở hữu và sử dụng Compare chống lại nó.

TimeSpan.Compare(t1.TimeOfDay, t2.TimeOfDay) 

mỗi tài liệu:

-1 if t1 is shorter than t2. 
0 if t1 is equal to t2. 
1 if t1 is longer than t2. 
+0

Xin vui lòng chia sẻ mã mẫu –

+1

@Peretz không tôn trọng dự định, nhưng câu trả lời này sẽ cho bạn biết mọi thứ bạn cần biết mà không cần mẫu mã ... – Jon

+0

@Peretz Tôi đã cập nhật câu trả lời của tôi với đoạn mã và cách sử dụng kết quả. –

2

Sử dụng the DateTime.Compare phương pháp:

DateTime date1 = new DateTime(2009, 8, 1, 0, 0, 0); 
DateTime date2 = new DateTime(2009, 8, 1, 12, 0, 0); 
int result = DateTime.Compare(date1, date2); 
string relationship; 

if (result < 0) 
    relationship = "is earlier than"; 
else if (result == 0) 
    relationship = "is the same time as";   
else 
    relationship = "is later than"; 

Console.WriteLine("{0} {1} {2}", date1, relationship, date2); 

Edit: Nếu bạn chỉ muốn so sánh thời gian, và bỏ qua ngày, bạn có thể sử dụng TimeOfDay như những người khác đã gợi ý. Nếu bạn cần một cái gì đó ít hạt mịn, bạn cũng có thể sử dụng các thuộc tính HourMinute.

+0

Điều này không tập trung vào Thời gian –

+0

Một ngày không có gì khác ngoài việc thực hiện thời gian. Ví dụ, các con số là số khoảng 100 nano giây đã trôi qua kể từ 12:00:00 nửa đêm, ngày 1 tháng 1, 0001. Vì vậy, so sánh hai ngày thực sự chỉ là so sánh sự khác biệt trong Ticks. So sánh thời gian là ẩn. – mgnoonan

+2

Có, nhưng OP chỉ yêu cầu so sánh Thời gian. Nếu bạn so sánh đánh dấu đầy đủ, sau đó nó sẽ không kiểm tra nếu 6AM là muộn hơn 5 AM ví dụ, đó là những gì dường như được ngụ ý bởi các câu hỏi –

14

Các <, <=, >, >= khai thác tất cả các công việc trực tiếp trên DateTimeTimeSpan đối tượng. Vì vậy, một cái gì đó như thế này hoạt động:

DateTime t1 = DateTime.Parse("2012/12/12 15:00:00.000"); 
DateTime t2 = DateTime.Parse("2012/12/12 15:03:00.000"); 

if(t1.TimeOfDay > t2.TimeOfDay) { 
    //something 
} 
else { 
    //something else 
} 
+0

Cảm ơn, tôi đoán ... là một cái gì đó như DateTime vs TimeSpan như một dealbreaker rằng nó bảo hành một downvote ở nơi đầu tiên mặc dù? Tôi nghĩ là không. – kaveman

+0

Nó không trả lời câu hỏi như được đăng, vì vậy có thường đó là những gì downvotes được cho. Ngoài ra, bạn quên đề cập đến == cũng hoạt động. –

+0

Chúng tôi đang thực sự đánh bại một con ngựa chết ở đây nhưng bạn rõ ràng là bị cuốn vào những chi tiết ngớ ngẩn này (cũng với @mgnoonan). Có một số chỉnh sửa ở giữa thời điểm OP được đưa lên, câu trả lời ban đầu, câu trả lời, câu trả lời đã chỉnh sửa của tôi, v.v. Đánh giá âm thanh trước khi bỏ phiếu cho mọi câu hỏi không phù hợp với câu hỏi của bạn. – kaveman

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