본문 바로가기
다물칸 주소복사
조회 수 98 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
Extra Form
구분 팁&트릭
출처 내가작성

리눅스에서

date -d '2016-01-01 00:00:00' '+%s.%N' | cut -b1-10

이런식으로 콘솔에 쳐보면 int값이 나오는데 리눅스 C개발자가 이걸 DB에 저장하는 데다가 메시지 프로토콜까지 string이 아닌 int로 헤더를 만들어놨다. c#에서도 datetime을 int로 바꾸는 함수를 제공은 하는데 전혀 다른값이 나오는게 아닌가? 썩을....

구글링을 해보니 ISO8601 표준에 의거하여 어쩌고 저쩌고가 보이면서 1970년이라는 단어가 보였다.

여지껏 1900, 1, 1 이거 가지고 컨버팅을 했었는데 혹시???

SSH에서 저위에 명령으로 테스트를 했다. 1900년을 넣었더니 역시나 (-)값이 나왔다.

1970년 1월 1일 0시 0분 0초로 했는데도 (-)값...

마구 대입하여 찾은 시간이 1970년 1월 1일 9시 0분 0초 오홋.....

그래서 맹글었다. 함수를

이 함수를 사용하면 SSH에서 구하는 값과 동일하게 나오는 것을 확인할 수 있다.

 

        public static DateTime IntToDateTime(int intDate)
        {
            return new DateTime(1970, 1, 1, 9, 0, 0).AddSeconds(intDate);
        }

        public static UInt32 DateTimeToInt(DateTime theDate)
        {
            return (UInt32)(theDate - new DateTime(1970, 1, 1, 9, 0, 0)).TotalSeconds;
        }