2009-06-21 6 views
-1
da = new SqlDataAdapter("SELECT ExitTime,EnterTime,name,[tag-id-st],[build-id],[room-no],tagType FROM Students,GateLogging WHERE GateLogging.tagType='student'", MyConn); 
DateTime ss=dt.Rows[0][1];  
DateTime date = DateTime.Now; 
int x=date.CompareTo(ss); 

Ceci est mon code, je me suis arrêté ici et je ne peux pas terminerComparer deux valeurs datetime avec C# un de table et d'autres est le courant

S'il vous plaît aidez-moi à comparer les valeurs dans le tableau « EnterTime » avec l'heure et spectacle en gridview les valeurs qui est plus que l'heure actuelle avec 10 minutes

Répondre

0

d'abord, trouver la date que vous soucient réellement - par exemple, il pourrait être

DateTime cutoff = DateTime.Now.AddMinutes(10); 

(faire une fois en haut, plutôt que par ligne) - puis juste comparer à ceux-ci, par exemple:

bool isOverdue = ss > cutoff; 

Vous pouvez aussi le faire à l'intérieur de la base de données avec GETDATE() et DATEADD(...) ou DATEDIFF(...)

0

Première De toutes, vous pouvez modifier la requête select pour ne renvoyer que les lignes pendant les 10 dernières minutes, et vous n'aurez pas besoin de comparer. Deuxièmement, vous pouvez utiliser da.Fill (dt) pour copier le resultset dans datatable et utiliser dt.Select (".. . ") pour filtrer seulement vos lignes, et le troisième quel est le problème? vous pouvez écrire

DateTime now = DateTime.Now; 
if (now - ss <= TimeSpan.FromMinutes(10)) 
{ 

} 
0

Rencontrant le même problème dans les tests unitaires j'ai écrit une classe AssertEx avec quelques affirmations moins nitpicky:

public static void AreSimilar(DateTime expected, DateTime actual, TimeSpan tolerance, string message) 
{ 
    DateTime expectedMin = expected.Subtract(tolerance); 
    DateTime expectedMax = expected.Add(tolerance); 

    if (actual < expectedMin || actual > expectedMax) 
    { 
     throw new AssertFailedException(message); 
    } 
} 
Questions connexes