2014-04-18 2 views
2

저는 C# DateTime 객체에 ISO 8601 (예 : '1396949418557')이라고되어있는 날짜 문자열을 역 직렬화 할 수 없습니다.Noda Time (C#) JSON (추정 된 ISO 8601) 날짜를 구문 분석하는 마술. 예 : 1396949418557

나는 Noda Time에 대해 읽은 것을 정말 좋아하며 JSON.NET을 사용하고 있습니다. 아무도 이것을 보지 못했습니까?

+1

. 올해는 1396이 될 것이므로 어쩌면 그 달은 94 일 것입니다. – jmoreno

+0

나는 그것을 쳐다 보았고 그 값을 (어떤 형식 으로든) 현재의 날짜와 비슷할 수있는 것으로 매핑 할 수 없었습니다. 나는 그것이 내가 뭔가를 놓치고 있다고 생각하여 ISO 8601 날짜라는 사실을 강조했다. 이제 나는 확인을 얻었다. ;) 감사! – ivnext

답변

1

유닉스 타임 스탬프처럼 보입니다. 이것을 시도하십시오 :

var unixEraStart = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); 
var dateTime = unixEraStart.AddMilliseconds(1396949418557); 
+0

감사합니다 * 대단히 * 답변이었습니다. 이 값은 나에게 8601 날짜/시간 문자열과 닮은 것처럼 보이지 않지만 뭔가를 놓칠 수 있다고 생각했습니다. 이제, 그것은 작동합니다 * 그리고 * 나는 몇몇 사람들에게 솔직한 피드백을 제공 할 것입니다. ;) – ivnext

1

문자열은 자바 스크립트 타임 스탬프 (1970/01/01부터 유효 밀리 초, 실제로는 1000 * 유닉스 시간)처럼 보입니다.

나는 결코 노드 타임을 사용하지 않았지만, 라이브러리는 유닉스 시대 이후 틱이라는 용어로 시간을 정의하는 것처럼 보입니다. 10,000 틱 = 1 밀리 초입니다. 따라서 문자열의 Int64.Parse를 수행 한 다음 10,000을 곱하면 해당 값을 사용하여 노드 날짜 객체를 구성 할 수 있습니다. 노다 시간을 사용하여

+0

고마워요! 이 추가 된 비트는 코스 날짜 시간 등으로 인해이 게시물을 보는 모든 사용자에게 필요합니다. – ivnext

5

하십시오 8601 날짜 아니다

Instant instant = Instant.FromMillisecondsSinceUnixEpoch(1396949418557); 
+0

손톱 바로 위에, 감사합니다! 사실, 더블 감사합니다! – ivnext

관련 문제