2009-08-17 11 views
5

Wie der Titel angibt, was ist der beste Weg, um mit DateTime ohne Stunden und Sekunden zu vergleichen?Vergleichen Sie zwei Datumsangaben - ohne Stunde und Sekunde

will ich meine Daten in String und eine Lösung wie

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

ist verdammt hässlich konvertieren.

Edit: Oh mein Gott, wie dumm ich fühle. Natürlich können Sie die Date-Eigenschaft verwenden.

"Eine andere Frage": Was ist der beste Weg, DateTime mit Jahr, Monat, Tag, Stunde, Minute, aber nicht Sekunden zu vergleichen?

Dank

+0

Um Ihre andere Frage zu beantworten, können Sie vielleicht mit .Ticks vertrödeln, es Skalierung entsprechend nach unten, bis es passt, was Größe, die Sie messen möchten. Aber ich würde wahrscheinlich nur mit der expliziten Methode der Überprüfung der Felder gehen. –

Antwort

16

Ist das: was Sie suchen?

DateTime.Now.Date 
+0

Absolut, verdammt wusste ich dieses Eigentum. Wie dumm ich mich fühle. – alexn

3

Werfen Sie einen Blick auf die Date Eigenschaft, dann können Sie dt1.Date mit dt2.Date vergleichen.

1

können Sie die Date-Eigenschaft des DateTime-Objekts verwenden.

Zum Beispiel Datetime dateOne

dateOne.Date Eigenschaft wird nur Datumsteil verwenden.

0

Antwort für die ‚anderen‘ Frage: Sie können für Datetime eine Erweiterung erstellen

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

aber dann schön es ist, zB: DateTime.Now.EqualsIgnoreSeconds(b)

1

Noch einfacher ist als die akzeptierte Antwort können Sie einfach :

DateTime.Today 
1

In Bezug auf den Vergleich ohne Sekunden, nur verwenden:

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); 
     } 
    } 
} 

Diese Linie ist entscheidend:

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