2013-06-13 1 views
0

JSON 문자열을 반환하는 웹 서비스가 있는데이 문자열의 속성 중 하나가 날짜입니다. 1/28/2011 6:21:02 PM 웹 서비스를 디버깅 할 때 JSON 문자열에 2011-01-29 02:21:02Z이 붙어 있는데, 이는 크롬에서 Sat, 29 Jan 2011 02:21:02 GMT으로 해석되고 있습니다. Firefox에서는 단지 Invalid Date을 반환합니다. 내 아약스 성공 기능은 다음과 같습니다 : JSON에서 유효한 날짜를 반환하는 .NET 웹 서비스, js에 잘못된 날짜가 표시됩니다.

success: function(data) { 
    var obj = $.parseJSON(data.d); 
    var dt = new Date(obj.signupDate); 
    console.log(obj.signupDate); //Firefox & Chrome: 2011-01-29 02:21:02Z 
    console.log(dt); //Firefox: Invalid Date Chrome: Fri Jan 28 2011 18:21:02 GMT-0800 (Pacific Standard Time) 
    console.log(dt.toUTCString()); //Firefox: Invalid Date Chrome: 1/28/2011 6:21:02 PM 
} 

그래서 나는 브라우저 및 날짜 시간의 형식 사이에 정말 이상한 불일치가 발생하고 있습니다.

+0

을 웹 서비스의 종류는? ASMX 또는 WCF? –

답변

1

구문 분석 및 서식 지정을위한 JavaScript의 지원 Date은 구현간에 크게 다릅니다.

일부 세부 정보는 this chart을 참조하십시오.

이러한 불일치를 해결하려면 moment.js 라이브러리를 사용하십시오.

.Net 측에서는 서비스가 서버의 현지 시간을 UTC 타임 스탬프로 변환하는 것 같습니다. 이것이 귀하가 찾고자하는 행동이 아니라면 DateTime.Kind 속성에주의를 기울여야합니다. Local 종류 (특히 DateTime.Now)는 피하십시오. You can read more here.

0

긴 형식을 반환하는 웹 서비스 메서드로 테스트 한 결과 잘 작동합니다. 웹 서비스에서

: 자바 스크립트에서

private static readonly long UnixEpochTicks = (new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).Ticks; 

public static long ToJsonTicks(this DateTime value) 
{ 
    return (value.ToUniversalTime().Ticks - UnixEpochTicks)/10000; 
} 

:

var date = new Date(data.d); 

해피 코딩 :)

관련 문제