2010-06-17 91 views
82

Tôi không muốn người dùng cung cấp ngày hoặc giờ trở lại.Cách so sánh DateTime trong C#?

Làm cách nào để so sánh nếu ngày và giờ đã nhập là LESS thì giờ hiện tại?

Nếu ngày và giờ hiện tại là 17-Jun-2010, 12:25 PM, tôi muốn người dùng không thể cung cấp ngày trước ngày 17 tháng 6 năm 2010 và thời gian trước 12:25 tối.

Giống như chức năng của tôi trả về false nếu thời gian nhập vào bởi người sử dụng là 16-Jun-2010 và thời gian 12:24

Trả lời

111

MSDN: DateTime.Compare

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); 
// The example displays the following output: 
// 8/1/2009 12:00:00 AM is earlier than 8/1/2009 12:00:00 PM 
+81

HEY! Xin vui lòng không upvote câu trả lời của tôi. Câu trả lời của MuSTaNG là tốt hơn. –

+9

Nevermind, chỉ cần upvote câu trả lời của tôi. (Hãy thử cách này) –

+2

Câu trả lời của bạn cung cấp một cách để xem sự khác biệt là gì thay vì chỉ biết rằng ngày trước hoặc sau. Tất nhiên câu trả lời của anh ấy tốt hơn cho OP, nhưng của bạn thì tốt hơn cho một số người ở đây từ google (tự bao gồm). – levininja

227

Microsoft cũng đã thực hiện các toán tử '<' và '>'. Vì vậy, bạn sử dụng chúng để so sánh hai ngày.

if (date1 < DateTime.Now) 
    Console.WriteLine("Less than the current time!"); 
+1

Có một tham chiếu cho điều này không? – cja

+5

Nguồn MSDN; chúng được coi là các toán tử DateTime được gán nhãn là "DateTime.Greater than", "DateTime.LessThanOrEqualTo" ..... https://msdn.microsoft.com/en-us/library/ff986512%28v=vs.90% 29.aspx –

+0

phiên bản .NET hiện tại: https://msdn.microsoft.com/en-us/library/ff986512(v=vs.110).aspx – juFo

9

MuSTaNG's answer nói lên tất cả, nhưng tôi vẫn đang thêm nó để làm cho nó phức tạp hơn một chút, với các liên kết và tất cả.


Các nhà khai thác truyền thống

có sẵn cho DateTime kể từ .NET Framework 1.1. Ngoài ra, cộng và trừ các đối tượng DateTime cũng có thể sử dụng toán tử thông thường +-.

Một ví dụ từ MSDN:

Bình đẳng:
System.DateTime april19 = new DateTime(2001, 4, 19); 
System.DateTime otherDate = new DateTime(1991, 6, 5); 

// areEqual gets false. 
bool areEqual = april19 == otherDate; 

otherDate = new DateTime(2001, 4, 19); 
// areEqual gets true. 
areEqual = april19 == otherDate; 

nhà khai thác khác có thể được sử dụng tương tự như vậy.

Đây là danh sách all operators có sẵn cho DateTime.

+1

Bạn chỉ có thể chỉnh sửa câu trả lời của họ để xây dựng. Trong mọi trường hợp, bạn không thể sử dụng '+' cho hai toán hạng 'DateTime', Bạn có thể làm' DateTime - DateTime', hoặc 'DateTime + TimeSpan', hoặc' DateTime - TimeSpan'. – Joey

0
//Datetime compare. 
private int CompareTime(string t1, string t2) 
{ 
    TimeSpan s1 = TimeSpan.Parse(t1); 
    TimeSpan s2 = TimeSpan.Parse(t2); 
    return s2.CompareTo(s1); 
} 
+0

Ông muốn so sánh 'DateTime' không' chuỗi ' – Danh

+0

bạn có thể chuyển đổi datetime thành chuỗi –

+0

hoặc: bạn có thể sử dụng: DateTime.Compare (startDate, endDate) –