2011-07-06 25 views
39

İki randevum var. Bir tarih giriş ve diğer DateTime.Now. Bunları mm/dd/yyyy biçiminde aldım, hatta m/d/yy biçiminde de olabilir. Her iki tarih de null olabilir, yani giriş değeri olarak da geçebildiğim için veri türü DateTime?'dur. Şimdi iki tarihi sadece mm/dd/yyyy veya m/d/yy biçimiyle karşılaştırmak istiyorum.Tarihler arasında karşılaştırma C#

cevap

63

Tarihlerinizde DateTime değişkenleri varsa, , biçimini almaz.

Date özelliğini kullanarak, saat dilimi gece yarısına ayarlanmış bir DateTime değerini döndürmek için kullanabilirsiniz. Yani, varsa:

DateTime dt1 = DateTime.Parse("07/12/2011"); 
DateTime dt2 = DateTime.Now; 

if(dt1.Date > dt2.Date) 
{ 
    //It's a later date 
} 
else 
{ 
    //It's an earlier or equal date 
} 
+9

"DateTime.Now.Date" yerine "DateTime.Now.Date" işlevini kullanmak için saat, dakika vb. Gerekmez. –

+0

@Piotr - iyi bir nokta - saat/dakika/saniye değerine erişme gerekmedikçe iş. –

+1

@Damien_The_Unbeliever Bu, herhangi bir tarih formatı için işe yarayacak mı? Ya yyyy/MM/dd' hakkında? – Arbaaz

7

Öncelikle, DateTime nesneler biçimlendirilmediği anlıyoruz. Yıl, Ay, Gün, Saat, Dakika, Saniye vb. Değerleri sayısal bir değer olarak depolarlar ve biçimlendirmeyi bir şekilde bir dize olarak göstermek istediğinizde oluşurlar. Biçimlendirmeden DateTime nesnelerini karşılaştırabilirsiniz.

sadece Yıl/Ay/Gün bölümlerini karşılaştırmak daha sonra ilk bir tarih içine girdi ayrıştırmak gerekiyor ve, DateTime.Now ile bir giriş tarihini karşılaştırmak için:

DateTime inputDate; 
if(!DateTime.TryParse(inputString, out inputDate)) 
    throw new ArgumentException("Input string not in the correct format."); 

if(inputDate.Date == DateTime.Now.Date) { 
    // Same date! 
} 
19

sonra DateTime değişkeninde tarih varsa onun Bir DateTime nesnesi ve herhangi bir biçim içermiyor. Biçimlendirilmiş tarih, DateTime.ToString yöntemini çağırdığınızda ve biçim sağladığınızda, string olarak ifade edilir.

DateTime date1 = new DateTime(2009, 8, 1, 0, 0, 0); 
DateTime date2 = new DateTime(2009, 8, 2, 0, 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"; 

Kod msdn alınan snippet'ine, iki DateTime değişken, sen karşılaştırma yapmaya yönelik karşılaştırmak yöntemi kullanabilirsiniz sahip düşünelim.