Frage

//% 20http: //wiki.wireshark.org/Development/LibpcapFileFormat

Ich steckte ein Datetime-Objekt zu einem Zeitstempel für das libpcap-Capture-Dateiformat bei der Umwandlung (wird auch von wireshark, Dateiformat definitiom ) in C #. Der Zeitstempel ich nicht verwalten kann mein Objekt zu konvertieren ist der Zeitstempel in dem Paket (record) Header (guint32 ts_sec und guint32 ts_usec).

War es hilfreich?

Lösung

Sie können es wie folgt:

DateTime dateToConvert = DateTime.Now;
DateTime origin = new DateTime(1970, 1, 1, 0, 0, 0, 0);
TimeSpan diff = date - origin;

// Seconds since 1970
uint ts_sec = Math.Floor(diff.TotalSeconds);
// Microsecond offset
uint ts_usec = 1000000 * (diff.TotalSeconds - ts_sec);

Andere Tipps

Es ist am besten, die Unix-Epoche und Ihre dateToConvert zu UTC vor jeglicher Manipulation zu konvertieren. Es gibt einen Konstruktor für die Datumzeit für die Konstruktion des UnixEpoch ein Datetimekind erfolgt, und es gibt eine ToUniversalTime () Methode für die dateToConvert. Wenn Sie jetzt immer wollen, gibt es eine praktische DateTime.UtcNow Eigenschaft, die für Sie kümmern sich um das dauert. Der Code geschrieben sollte keine Probleme hat, aber wenn Sie diese Funktion machen, könnte ein UTC-Datum übergeben und mit einem UTC Zieldatum und einer lokalen Unix-Epoche geben würde, schon gar nicht die richtigen Ergebnisse arbeiten wird, es sei denn, Sie in GMT und nicht auf Sommerzeit.

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