2009-08-17 13 views
5

Jak wskazuje tytuł, jaki jest najlepszy sposób na porównanie z DateTime bez godzin i sekund?Porównaj dwa datetimes - bez godziny i sekundy

Nie chcę przekonwertować moje daty, aby ciąg, a rozwiązanie jak

DateTime.Now.Year == last.Year && DateTime.Now.Month == last.Month && DateTime.Now.Day == last.Day

jest cholernie brzydka.

Edytuj: O mój boże, jak głupio się czuję. Oczywiście możesz użyć właściwości Date.

"Kolejne pytanie": Jaki jest najlepszy sposób na porównanie DateTime z rokiem, miesiącem, dniem, godziną, minutą, ale nie sekundami?

Dzięki

+0

Aby odpowiedzieć na inne pytanie, może można syf wokół z .Ticks, skalowanie w dół odpowiednio aż pasuje niezależnie od wielkości chcesz mierzyć. Ale prawdopodobnie poszedłbym z wyraźną metodą sprawdzania pól. –

Odpowiedz

16

Czy to: czego szukasz?

DateTime.Now.Date 
+0

Absolutnie, cholera, znałem tę własność. Jak głupio się czuję. – alexn

3

Spójrz na własność Date, można porównać dt1.Date z dt2.Date.

1

można użyć właściwości Date obiektu DateTime.

Na przykład DateTime dateOne

nieruchomość dateOne.Date użyje dotychczas tylko część.

0

Odpowiedź do „innego” pytanie: można utworzyć rozszerzenia dla DateTime

public static bool EqualsIgnoreSeconds(this DateTime a, DateTime b) 
{ 
    // the ugly code 
} 

ale używając to jest piękne, np: DateTime.Now.EqualsIgnoreSeconds(b)

1

jeszcze prostsze niż przyjętym odpowiedź można po prostu wykorzystać :

DateTime.Today 
1

Jeśli chodzi o porównanie bez sekund, wystarczy użyć tego:

public static bool EqualsIgnoringSeconds(this DateTime source, DateTime target) 
{ 
    return TimeSpan.FromTicks(source.Ticks).TotalMinutes == TimeSpan.FromTicks(target.Ticks).TotalMinutes; 
} 
0
using System; 

namespace Rextester 
{ 
    public class Program 
    { 
     public static void Main(string[] args) 
     { 
      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.Date, date2.Date); 
      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); 
     } 
    } 
} 

Linia ta jest kluczowa:

int result = DateTime.Compare(date1.Date, date2.Date);