JSON 날짜 포맷 변환하기
マイクロソフト JSON 날짜 형식 (jQuery, ASP.NET, Ajax) 다루기
문제
ASP.NET 백엔드에서 생성된 JSON 데이터는 날짜를 특별한 형식으로 표현합니다. 이 형식은 "/Date(밀리초 타임스탬프)/" 입니다. 예를 들어 2023-08-30 날짜는 "/Date(1661932800000)/" 처럼 표현됩니다.
하지만 JavaScript의 기본 날짜 객체는 이 형식을 이해하지 못합니다. 따라서 이 데이터를 사용하기 전에 JavaScript에서 이해할 수 있는 형식으로 변환해야 합니다.
해결 방법
날짜 추출
jQuery를 사용하여 JSON 데이터에서 날짜 문자열을 추출합니다.
var jsonDate = data.createDate; // JSON 데이터에서 날짜 속성 가져오기
밀리초 타임스탬프 추출
정규 표현식을 사용하여 "/Date(" 와 ")/" 부분을 제거하고 숫자만 남기도록 문자열을 조작합니다. 이 숫자가 밀리초 타임스탬프입니다.
var timestamp = parseInt(jsonDate.substr(6)); // 정규 표현식 사용 없이 간단하게 자를 수도 있습니다.
JavaScript 날짜 객체 생성
추출한 밀리초 타임스탬프를 사용하여 JavaScript의
Date
객체를 생성합니다.var jsDate = new Date(timestamp);
이제
jsDate
변수는 JavaScript에서 다루기 쉬운 날짜 객체를 포함합니다.
추가 고려 사항
- 보안상의 이유로
eval
함수 사용은 권장하지 않습니다. 위의 예시처럼parseInt
와new Date
를 사용하는 것이 더 안전합니다. - 추출된 날짜를 원하는 형식으로 표시하려면 JavaScript의
formatDate
메서드(라이브러리 사용 필요) 또는 문자열 조작을 이용할 수 있습니다.
마이크로소프트 JSON 날짜 포맷 변환 예제 코드 (jQuery, ASP.NET, Ajax)
대체 방법 1: eval
함수 사용 (권장되지 않음)
주의
eval
함수는 보안상의 이유로 권장되지 않습니다. 가능한 한 다른 방법을 사용하는 것이 좋습니다.
var jsonDate = "/Date(1661932800000)/";
var jsDate = eval("new Date(" + jsonDate.substr(6) + ")");
이 방법은 eval
함수를 사용하여 JSON 문자열을 직접 실행하는 것입니다. 하지만 이 방법은 보안상의 위험이 있기 때문에 권장되지 않습니다.
Date.parse
함수는 ISO 8601 형식의 날짜 문자열을 파싱할 수 있습니다. 그러나 Microsoft JSON 날짜 형식은 ISO 8601 형식과 다르기 때문에 이 방법은 항상 작동하지 않을 수 있습니다.
var jsonDate = "/Date(1661932800000)/";
var jsDate = new Date(Date.parse(jsonDate.substr(6)));
대체 방법 3: 라이브러리 사용
보다 안전하고 효율적인 방법은 날짜 포맷팅을 위한 라이브러리를 사용하는 것입니다. 예를 들어, Moment.js 라이브러리를 사용할 수 있습니다.
var jsonDate = "/Date(1661932800000)/";
var jsDate = moment(jsonDate.substr(6)).toDate();
Moment.js는 다양한 날짜 포맷팅 기능을 제공하며, Microsoft JSON 날짜 형식도 지원합니다.
권장 방법
jquery asp.net ajax