2016-07-09 1 views
-1

J'essaye de créer le manuscrit que les contrôles sont le temps passé passé, mais obtenant quelques erreurs.Comment vérifier, est-ce que "X minutes" est passé avec timeStamp en C#?

DateTime currentTime = DateTime.Now; 
TimeSpan pauseMin = TimeSpan.FromMinutes(1); 
TimeSpan compare = currentTime + pauseMin; 
if (currentTime >= compare) 
return null; 
+0

Pour le temps de mur, utilisez 'System.DateTime'. Pour le temps écoulé, utilisez 'System.Diagnostics.Stopwatch'. – yaakov

Répondre

1

Je voudrais écrire cela comme

DateTime currentTime = DateTime.Now; 
TimeSpan pauseMin = TimeSpan.FromMinutes(1); 
DateTime compare = currentTime.Add(pauseMin); 
if (currentTime >= compare) { 
    return null; 
} 

Il utilise le type d'objet que vous essayez de représenter avec tout. DateTime peut avoir de Timespan leur est ajoutée: https://msdn.microsoft.com/en-us/library/system.datetime.add%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396

Ou la réponse de Istern si vous êtes toujours juste ajoutez un nombre entier de minutes à l'heure.

0

DateTime et TimeSpan est différent. Vous pouvez utiliser currentTime comme ceci:

TimeSpan currentTime = TimeSpan.FromTicks(DateTime.Now.Ticks); 

Et vous pouvez vous passer minutes comme ceci:

double minutes = (compare - currentTime).TotalMinutes; 
+0

J'ai essayé de modifier le code par votre exemple, mais j'ai quand même eu l'erreur. TimeSpan currentTime = TimeSpan.FromSeconds (DateTime.Now.Second); TimeSpan pauseMin = TimeSpan.FromSeconds (1); TimeSpan compare = currentTime + pauseMin; double minutes = (compare - currentTime) .TotalMinutes; if (currentTime> = minutes) return null; – Harardin

+0

Pouvez-vous poster votre erreur? –

+0

Et vous comparez le temps avec le double. Ce n'est pas correct. –

1

Vous ne pouvez pas comparer DateTime et TimeSpan.

Essayez var compare = currentTime.AddMinutes(1)

Si vous avez besoin d'utiliser une certaine façon TimeSpan, utilisez la réponse de Jamie F.

0

Si vous voulez juste faire une pause pendant 1 minute, vous pouvez utiliser

System.Threading.Thread.Sleep(1000 * 60); // 1 minute = 60000 milliseconds 

Si vous voulez que votre fonction à exécuter pendant 1 minute, vous pouvez utiliser quelque chose comme

var returnAt = DateTime.Now().AddMinutes(1); 

while (true) 
{ 
    // your code here ? 

    if (DateTime.Now() >= returnAt) return null; 
}