Frage

Ich habe Probleme bei der Entscheidung, was ist die beste Art und Weise zu handhaben und zu speichern Zeitmessungen ist.

Ich habe eine Anwendung, die ein Textfeld hat, den die Benutzer zur Eingabe von Zeit entweder in hh erlaubt: mm: ss oder mm: ss-Format.

Also auf Ich habe geplant, diese Zeichenfolge Parsen Zeichenüber es auf den Doppelpunkten und die Schaffung Zeitraum (oder mit TimeSpan.Parse () und dem Hinzufügen von nur „00:“ den mm: ss Fall) für meine Business-Logik. Ok?

Wie speichere ich diese wie in einer Datenbank obwohl? Was wäre der Feldtyp? Datetime scheint falsch. Ich will nicht eine Zeit von 0.54.12 als 1901.01.01 gespeichert werden 0.54.12, die ein bisschen schlecht zu sein scheint?

War es hilfreich?

Lösung

Span hat eine Int64 Ticks Eigenschaft, die Sie speichern kann stattdessen und ein Konstruktor , die einen Tick Wert annimmt.

Andere Tipps

Ich denke, die einfachste ist, einfach eine Benutzereingabe in eine ganze Anzahl von Sekunden zu konvertieren. So 54:12 == 3252 Sekunden speichern, so die 3252 in Ihrer Datenbank oder wo auch immer. Dann, wenn Sie es für den Benutzer angezeigt werden müssen, können Sie es konvertieren wieder zurück.

Für Zeiträume von weniger als einem Tag, nur Sekunden verwenden, wie andere gesagt haben.

Für längere Zeiträume, hängt es von Ihrem db-Motor. Wenn SQL Server vor Version 2008 mögen Sie einen Datetime. Es ist okay- Sie können nur die Standard-1.1.1900 Datum ignorieren werden sie alle haben. Wenn Sie das Glück haben, SQL Server 2008 zu haben, dann gibt es separate Datum und Uhrzeit Datentypen Sie verwenden können. Der Vorteil bei einem echten Datumzeit / Zeittyp verwendet, ist die Verwendung der Funktion DateDiff zum Vergleichen Dauern.

Die meisten Datenbanken haben eine Art von Zeitintervall-Typ. Die Antwort hängt davon ab, welche Datenbank Sie sprechen. Für Oracle, es ist nur eine Fließkommazahl, die die Anzahl der Tage (einschließlich Bruch Tage) darstellt. Sie können addieren / subtrahieren, das zu / von jedem Typ DATE und Sie die richtige Antwort.

als Integerzahl von Sekunden (oder Millisekunden entsprechender)

Sammeln Sie sowohl die Startzeit und die Zeit stoppen? Wenn ja, könnten Sie den „Zeitstempel“ Datentyp verwenden, wenn Ihr DBMS, dass unterstützt. Wenn nicht, nur als Datum / Zeit-Typ. Jetzt haben Sie gesagt, Sie nicht das Datum Teil gespeichert werden sollen - aber der Fall betrachtet, wo die Zeitdauer erstreckt sich über Mitternacht - Sie beginnen bei 23.55.01 und endet am 00.05.14, zum Beispiel - es sei denn, Sie haben auch das Datum da drin. Es gibt Standard-Build-in-Funktionen die abgelaufene Zeit (in Sekunden) zwischen zwei Datumszeitwerte zurückzusetzen.

Gehen Sie

mit ganzen Zahlen für Sekunden oder Minuten. Sekunden ist wahrscheinlich besser. Sie werden sich nie mit zu viel Präzision etwas Kick entschieden haben. Auch für Ihre UI, sollten Sie mehrere Texteingaben verwenden Sie müssen sich keine Sorgen über die Benutzer tatsächlich in der Eingabe „:“ richtig. Es ist auch viel einfacher zu anderen Einschränkungen hinzufügen, wie die Minuten- und Sekundenwert conting 0-59 enthält.

und int-Typ sollte es tun, es als Sekunden zu speichern und es hin und her

Parsen

http://msdn.microsoft.com/en-us/library /ms187745.aspx

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top