2009-07-15 31 views
10

Windows'ta VisualStudio 2005 kullanarak C# çalışıyorum. İki tarih arasındaki maksimum tarihi bulmak istiyorum.Maksimum Tarih Nasıl Bulunur

varsayalım:

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

O "Tarihi" döndüren bir yöntem yazmak istiyorum ikisinin büyüktür.

+0

Bu açıkça bir ödev sorudur. http://stackoverflow.com/questions/230510/homework-on-stackoverflow –

+1

@Adam orijinal sürümü göz önüne alındığında daha az belirgin. –

+0

Bunu, çalışmanın sadeliğine dayanarak değerlendiriyorum, sorunun metnini değil. Daha net bir hale getirdiniz, ancak temel olarak karşılaştırma operatörlerinin nasıl kullanılacağını soruyor. Bu 101 maddeyi programlıyor. –

cevap

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

Ya gerçek 1-liner:

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

ahh, Visual Studio 2005. Birisi, Func'nin orada işe yaramayacağını belirtebilir: "Tek liner olmak için çığlık atmak" için P –

57

hadi, bu bir sayısal zaman içinde tek silindir gömleği

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

+1 –

4

DateTime sınıfı saklar noktaları olmak bağırıyor kene adı verilen 64 bitlik bir tamsayı değeri olarak. Tek bir onay, yüz nanosaniye veya saniyenin on milyonda birini temsil eder. DateTime yana There are 10,000 ticks in a millisecond.

basitçe sayısal bir değerdir, kolayca bunları karşılaştırabilirsiniz yapacağınız < veya > operatörlerini kullanarak herhangi iki sayı.

+0

Bkz. AgileJon'un cevabı: DateTime (ve TimeSpan ve DateTimeOffset) uygulaması>, < vb. altta yatan değeri çıkarmaya gerek yoktur. – Richard

+0

Sadece, DateTime sınıfında biraz arka plan vermek zorunda olduğunuzu söylemediniz. –

+0

Arka plana ihtiyacı yok. Bir ipucuna bile ihtiyacı yok. Ona bir ipucu verdiysen, okuyamadı. –

14

Bunu bir boyut için kullanmayın, bir Max rutinini yazmanın bir anlamı yok - jenerik kullanın!

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

Sen Nesneler uzatma yöntemine Max benzeri Linq to kullanabilirsiniz:

new [] {date1,date2,date3}.Max(); 
İlgili konular