Ist für die CLR ein DateTime-Objekt mit hoher Auflösung (Mikrosekunde, Nanosekunde) verfügbar?
Habe ich ein instrument, das speichert timestamps im Mikrosekunden-Ebene, und ich brauche, um zu speichern diese Zeitstempel als Teil der Sammlung von Informationen aus dem instrument. Beachten Sie, dass ich tun nicht müssen generieren von Zeitstempeln; diese Zeitstempel sind pre-generiert durch das Gerät selbst mit einem hochauflösenden real-time operating system. Analyse aus diesen Werten ist nicht ein Problem — Sie werden gespeichert, mit einem standard-format in der UTC-Zeit. Ursprünglich wollte ich mit der C# DateTime-Struktur kann nur speichern Zeitstempel bis Millisekunden-Auflösung.
Ist es ein anderes Objekt geliefert mit .NET oder ein gemeinsamer C# - Bibliothek, die unterstützt micro - und (idealerweise) Nanosekunden-Auflösung Zeitstempel, oder bin ich da zu Rollen?
InformationsquelleAutor der Frage Robert P | 2011-03-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnten Sie in der Lage sein zu verwenden
DateTime
nachdem alle.DateTime.Ticks
' Auflösung von 100 Nanosekunden. Sie können die Zecken mitDateTime.AddTicks
.InformationsquelleAutor der Antwort steinar
Blick auf die Antworten, und die DateTime.Ticks-Eigenschaft, ist es möglich zu berechnen Mikrosekunden und Nanosekunden von den gegebenen Werten. Als Ergebnis, ich habe diese extension-Methode der Klasse zu tun. (Leider, ich glaube nicht, dass ich in der Lage, es zu benutzen gegeben, einige andere Anforderungen, aber andere Leute finden es vielleicht hilfreich.)
Dieser noch nicht, können Sie die Mikrosekunden oder Nanosekunden nach der Erstellung, aber Sie können Hinzugefügt werden, kurz nach. Es ist auch nicht zu geben, die Auflösung, die besser als das, was ein DateTime kann (zB 1/10 einer Millisekunde aka 100-Nanosekunden-Auflösung).
Ich hoffe, dass dies funktioniert für jemand anderes!
InformationsquelleAutor der Antwort Robert P
Wenn ich wirklich gebraucht, mehr Genauigkeit, als die 100 ns Auflösung zur Verfügung gestellt von
DateTime
würde ich erwägen, eine Struktur, die enthält eineDateTime
und ein integer-Wert:Dann umsetzen, was nötig ist, zum Beispiel:
DateTime
zuerst, dannNanoseconds
)ToString()
z.B. format DateTime in 100 ns Genauigkeit hängen Nanosekunden.DateTime
HiResTimeSpan
)... usw. ...
InformationsquelleAutor der Antwort Joe
Bin ich zu kämpfen mit diesem gleichen Problem, ich habe ein Projekt, wo ich Pikosekunden-Auflösung Zeitstempel. Die Quelle meiner Daten ist im "time_t" - format, d.h. Sekunden seit epoch + Pikosekunden + UTC-Offset.
Die beste Lösung, die ich gefunden habe, ist die Arbeit mit "dezimal-Sekunden seit der Epoche in UTC", wie meine Zeit-format intern, und nur mit DateTime als pretty-print-Objekt zu extrahieren locale/Formatierung bis zu 1 s Auflösung, und dann manuell Bearbeiten die Zeichenfolge zu zählen Sekundenbruchteile.
InformationsquelleAutor der Antwort Chuu
Könnte Sie wahrscheinlich Rollen Sie Ihre eigenen, in verschiedener Weise.
1.) Erstellen Sie eine Struktur mit System.Dezimal Feld als "backing store".
2.) Erstellen Sie eine Struktur mit System.Numerik.BigInteger als Unterlage.
Wrap-Methoden zu verwenden, System.DateTime für die komfortable "Teilen" (Jahr, Monat, Tag,...)
Ihre eigenen Nanonsecond, Pikosekunden, Femtosekunden -, etc., Eigenschaften und Methoden.
FYI:
DateTime.MaxValue.Zecken : 3,155,378,975,999,999,999
Dezimal.MaxValue : 79,228,162,514,264,337,593,543,950,335
BigInteger : Beliebig Große!
InformationsquelleAutor der Antwort Ben Stabile