2014-02-24 2 views
0

이것은 악몽입니다 (적어도 쉬운 방법을 찾을 수는 없음). 몇 시간 동안 수색 했으므로 정말 내 솔루션을 찾을 수 없습니다.게시 날짜 web api 사용자 정의 형식

웹 API에서 사용자 정의 형식으로 날짜를 처리하는 방법은 무엇입니까? DD/MM/YYYY 형식이 필요합니다.

api에서 기본 형식 인 MM/DD/YY를 원하기 때문에 날짜를 게시 할 수 없습니다. 한 가지 해결책은 모든 날짜를 JavaScript를 통해 형식으로 구문 분석하는 것입니다. 내 API가 필요하지만 진짜? 더 깨끗한 방법이 아닌가요?

내 API는 내 형식을 어떻게 알 수 있습니까?

나는 this 게시물을 발견했으며 게시에는 적합하지 않다고 말합니다. 그리고 아직 해결책이 없습니다.

나는 잘못된 방식입니까? 질문에 대한 투표가 너무 많아서 좋은 대답조차하지 못했습니다!

+0

문자열을 사용하고 원하는 형식으로 포맷해야하는 이유는 무엇입니까? yourDate.ToString ("dd/MM/yyyy")이이를 수행해야합니다. – Gjohn

답변

1

기본적으로 Web.Api의 JSON 포맷터는 Json.NET 시리얼 라이저를 사용합니다. Json.NET은 ISO 8601 형식으로 날짜를 씁니다. UTC의 날짜는 "Z"접미사로 작성됩니다. 현지 시간의 날짜에는 시간대 오프셋이 포함됩니다. 예를 들어 :

2012-07-27T18:51:45.53403Z   // UTC 
2012-07-27T11:51:45.53403-07:00 // Local 

당신은 웹 API를 구성 섹션에서 DateFormatString 속성을 설정하여 serrializer date time settings을 재정의 할 수

public static class WebApiConfig 
{ 
    public static void Register(HttpConfiguration config) 
    { 
     config.Formatters.JsonFormatter.SerializerSettings.DateFormatString = "yyyy-MM-dd"; 
    } 
} 
또한

, 아마, 당신은 Global.asax에

에서 스레드 culture 설정을 변경해야합니다
protected void Application_BeginRequest(object sender, EventArgs e) 
{    
    var newCulture = (CultureInfo)Thread.CurrentThread.CurrentCulture.Clone(); 
    newCulture.DateTimeFormat.ShortDatePattern = "yyyy-MM-dd"; 
    newCulture.DateTimeFormat.ShortTimePattern = "HH:mm"; 
    newCulture.DateTimeFormat.LongTimePattern = "HH:mm:ss"; 
    newCulture.DateTimeFormat.DateSeparator = "-"; 
    Thread.CurrentThread.CurrentCulture = newCulture; 
} 
관련 문제