2012-11-13 3 views
1

날짜와 관련하여 특히 ASP.NET 웹 API에서 작동하도록 knockout을 얻으려고 싸우고 있습니다. 나는 this question과 다른 비슷한 것들을 보았지만 주어진 해결책은 마음에 들지 않았습니다.녹아웃 JS 및 ASP.NET 웹 API 날짜

일부 날짜가있는 개체가 있습니다. 나는 그것이로서 직렬화 된 웹 API 컨트롤러에서 반환하는 경우 다음과

{ 
    "AdjustmentId": "6b8bc63f-de50-4feb-b0e2-a10800cbc3c3", 
    "PortfolioCode": 2461, 
    "Description": "", 
    "StartDate": "2012-11-12T22:00:00Z", 
    "EndDate": "2012-11-12T22:00:00Z" 
} 

문제 : 나는 ko.toJSON를 사용하여 녹아웃에서 동일한 뷰 모델을 반환 할 때

{ 
    "AdjustmentId": "6b8bc63f-de50-4feb-b0e2-a10800cbc3c3", 
    "PortfolioCode": 2461, 
    "Description": "", 
    "StartDate": "2012-11-13T00:00:00+02:00", 
    "EndDate": "2012-11-13T00:00:00+02:00" 
} 

, 나는 다음과 같은 수 날짜가 이제 컨트롤러에서 역 직렬화되지 않는다는 것입니다. 개체가 있지만 DateTime.Min 날짜가 설정됩니다. 12 월 13 일에서 10시 자정까지 날짜가 변경된 것을 볼 수 있습니다. 이는 시간대가 변경 되었기 때문입니다.

아무도 도와 줄 수 있습니까? 현재 해결 방법으로 날짜를 toISOString()을 사용하여 변환하고 있지만 자동으로 직렬화가 발생하도록하고 싶습니다.

정말에 어떤 도움을 감사하겠습니다이

+0

문제의 원인을 정확히 설명해 주시겠습니까? 녹아웃을 사용하여 직렬화하고 WebAPI를 사용하여 직렬화 해제 하시겠습니까? 컨트롤러는 어떻게 생겼습니까? –

+0

이 기사는 JSON이 기본적으로 ISO8601을 사용하도록 기본 serializaer를 대체하는 좋은 방법을 제공합니다. http://www.hanselman.com/blog/OnTheNightmareThatIsJSONDatesPlusJSONNETAndASPNETWebAPI.aspx – Tyrsius

+0

@Tyrsius Json.NET은 WebAPI 버전에서 기본적으로 ISO8601을 사용합니다 . 이것은 Json.NET에서 6 개월 전 만들어진 변경입니다. –

답변

1

여기에서 발생 될 수있는 것은 게시 된 날짜/시간 서버 측에서 역 직렬화됩니다 때, 그것은 일종의 "UTC"의 것을, 그리고 "로컬"하지 . 서버 측에서 .ToLocalTime()을 사용하여 로컬 시간으로 변환 해보십시오.

+0

그게 전부입니다! 고마워. 문제는 이제 더 큰 문제입니다. 인도에있는 누군가가 15 일을 지정하고 서버가 미국에 앉아 있으면 현지 시간으로 변환됩니다. 이는 14 일입니다. 그것은 옳은가 틀린가? 기술적으로 인도에서 15 위는 미국에서 14 위 (어쨌든 하루 중 일부)이지만 인도 사람은 시간대에 상관없이 15 위를 의미합니다. –