2009-07-15 40 views
10

Tôi làm việc trong C# bằng VisualStudio 2005 trên Windows. Tôi muốn tìm ngày tối đa giữa hai ngày.Cách tìm Ngày Tối đa

Giả sử:

From Date: 10-1-2009//Day-Month-YYYY 
To Date : 1-3-2009 

Tôi muốn viết một phương thức mà trả rằng: "Đến ngày" là lớn hơn của cả hai.

+0

Điều này rõ ràng là một câu hỏi bài tập về nhà. http://stackoverflow.com/questions/230510/homework-on-stackoverflow –

+1

@Adam hơi kém rõ ràng hơn với phiên bản gốc. –

+0

Tôi đánh giá dựa trên sự đơn giản của hoạt động, không phải là từ ngữ của câu hỏi. Bạn đã làm cho nó rõ ràng hơn nhiều, nhưng về cơ bản anh ta hỏi cách sử dụng các toán tử so sánh. Đây là công cụ lập trình 101. –

Trả lời

2
public static DateTime WhichIsBigger(DateTime first, DateTime second) { 
    if(first > second) return first; 
    else return second; 
} 

Hoặc một thực 1-liner:

Func<DateTime, DateTime, DateTime> whichIsBigger = (f, s) => f > s ? f : s; 
+1

ahh, Visual Studio 2005. Có ai đó có thể chỉ ra rằng Func sẽ không hoạt động ở đó: P –

57

Oh come on, chương trình này được la hét là một one-liner

public static DateTime Max(DateTime a, DateTime b) { 
    return a > b ? a : b; 
} 
+6

+1 cho "la hét là một lớp lót" –

4

Các DateTime cửa hàng lớp điểm trong thời gian số lượng dưới dạng giá trị số nguyên 64 bit được gọi là dấu chọn. Một dấu tích đơn thể hiện một trăm nano giây hoặc một phần mười phần nghìn giây. There are 10,000 ticks in a millisecond.

Kể từ DateTime chỉ đơn giản là một giá trị số, bạn có thể dễ dàng so sánh chúng như bạn làm bất kỳ hai số bằng cách sử dụng < hoặc > nhà khai thác.

+0

Xem câu trả lời của AgileJon: DateTime (và TimeSpan và DateTimeOffset) triển khai>, < , v.v. vì vậy không cần trích xuất giá trị cơ bản. – Richard

+0

Không nói bạn phải làm, chỉ cần đưa ra một chút nền tảng về lớp DateTime. –

+0

Anh ấy không cần nền. Anh ta thậm chí không cần manh mối. Nếu bạn cho anh ta một manh mối, anh ta không thể đọc nó. –

14

Hãy thử tính năng này cho kích thước, không có điểm bằng văn bản một thói quen Max bao giờ trở lại - sử dụng Generics!

public T Max<T>(T value1, T value2) where T:IComparable 
{ 
    return value1.CompareTo(value2) > 0 ? value1 : value2; 
} 
3

Bạn có thể sử dụng LINQ to Objects phương pháp mở rộng Max như:

new [] {date1,date2,date3}.Max(); 
Các vấn đề liên quan