문제

DateTime 객체를 LIBPCAP 캡처 파일 형식의 타임 스탬프로 변환하는 데 갇혀 있습니다 (Wireshark에서도 사용됩니다. 파일 형식 definitiom) C#에서. 객체를 변환 할 수없는 타임 스탬프는 패킷 (레코드) 헤더의 타임 스탬프 (GUINT32 TS_SEC 및 GUINT32 TS_USEC)입니다.

도움이 되었습니까?

해결책

당신은 그렇게 할 수 있습니다 :

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);

다른 팁

조작 전에 Unix Epoch와 DateToconvert를 UTC로 변환하는 것이 가장 좋습니다. UnixePoch를 구성하기 위해 DateTimekind를 취하는 DateTime의 생성자가 있으며 DateToconvert에 대한 touniversaltime () 메소드가 있습니다. 당신이 지금 항상 원한다면, 당신을 위해 그것을 돌보는 편리한 datetime.utcnow 속성이 있습니다. 작성된 코드에는 아무런 문제가 없어야하지만 기능을 수행하면 UTC 날짜가 전달되어 UTC 대상 날짜와 함께 작업 할 수 있으며 로컬 UNIX 에포크는 GMT에 있지 않으면 올바른 결과를 제공하지 않습니다. 여름철에는 아닙니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top