DateTime Differenz in Zeit und Millisekunden
Muss ich die Differenz zweier datetime-millisekundengenau Vergleich der ersten datetime wird weniger als der zweite, es zu stoppen, eine Schleife in den gridviews Ereignis löschen
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
if (!Ok2Delete(e.RowIndex)) return;
//your logic goes here and the above IF statement
//will hopefully guarantee your code to run once.
}
private bool Ok2Delete(int ri) //ri is the record index to be deleted
{
if (Session["ri"] == null ||
(!((ri == ((int)Session["ri"])) &&
(DateTime.Now.Subtract((DateTime)Session["ri_time_stamp"]).Seconds < 2))))
{
Session["ri"] = ri;
Session["ri_time_stamp"] = DateTime.Now;
return true;
}
return false;
}
dieser code nicht so funktioniert wie erwartet
- Ihr code ist auf der Suche für mehr als 2 Sekunden Unterschied in der OK2Delete Funktion. Was genau suchst du statt? Mehr als 0 Millisekunden?
- Auch benutzen Sie bitte DateTime.UtcNow anstelle von DateTime.Nun. Es macht Ihre app unabhängig von Maschine & Zeitzone.
- Auch jeder die Mühe gemacht, so brauche ich, um wählen Sie eine Antwort aus, aber es hat nicht ganz funktioniert
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden
.TotalSeconds
... ansonsten eine Zeitspanne von 122 " TotalSeconds wird 2 Sekunden.(end - start).TotalMilliseconds
, wo Anfang und Ende sindDateTime
Beachten Sie, dass Sie möglicherweise nicht in der Lage zu bekommen Millisekunden-Präzision aus DateTime.Jetzt(). Sehen diese Frage. Sie können eine
Stopwatch
wenn Sie brauchen, feiner Präzision.Wollen Sie so etwas wie dies (mit TotalMilliseconds der Zeitspanne, die das Ergebnis der Subtraktion der zwei datetime-Objekte):
Für Ihre spezifischen Szenario:
Update
Basierend auf Kommentare und Kritik des code, das Problem ist nicht im Zusammenhang mit der Zeit Unterschied. Stattdessen ist das problem in der RowDeleting-code. Die folgende Zeile:
sollte geändert werden, um
e.Cancel = True
um zu verhindern, dass das löschen (in den RowDeleting-Ereignis). Ich habe aktualisiert die Antwort mit dem, was Sie tun müssen.