1

C# で、DateTime オブジェクトを libpcap キャプチャ ファイル形式 (wireshark、ファイル形式定義でも使用) のタイムスタンプに変換することに行き詰まっています。オブジェクトを変換できないタイムスタンプは、パケット (レコード) ヘッダー (guint32 ts_sec および guint32 ts_usec) のタイムスタンプです。

4

2 に答える 2

6

次のように実行できます。

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);
于 2009-09-18T17:33:25.677 に答える
0

操作を行う前に、Unix エポックと dateToConvert を UTC に変換することをお勧めします。UnixEpoch を構築するために DateTimeKind を取る DateTime のコンストラクタと、dateToConvert の ToUniversalTime() メソッドがあります。常に Now が必要な場合は、便利な DateTime.UtcNow プロパティが用意されています。記述されたコードに問題はないはずですが、これを関数にすると、UTC 日付が渡され、UTC ターゲット日付とローカルの Unix エポックを操作しても、GMT とサマータイムではありません。

于 2009-09-28T14:43:05.743 に答える