C#
2015.12.28 16:37
리눅스의 시간(int)를 구하는 방법
다물칸 주소복사
조회 수 98 추천 수 0 댓글 0
구분 | 팁&트릭 |
---|---|
출처 | 내가작성 |
리눅스에서
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; }