2012-11-30 5 views
4
내가 ISO-8601 표준에 날짜를 인쇄 할

이있는 날짜를 생성합니다 YYYY-MM-DDTHH:mm:ss.sssZ 그래서 나는 다음 코드 줄을 사용하지만 예기치 않은 출력을 얻고있다자바 스크립트 Date.toJSON은() 잘못된 시간과 분

var date = new Date(2012, 10, 30, 6, 51); 
print('UTC Format: '+date.toGMTString()); 
print('toString() method: '+date.toString()); 
print('toJSON() method: '+date.toJSON());//print hours and minutes incorrectly 
print('to UTCString() method: ' + date.toUTCString()); 

해당 출력은

UTC Format: Fri, 30 Nov 2012 01:21:00 GMT 
toString() method: Fri Nov 30 2012 06:51:00 GMT+0530 (India Standard Time) 
toJSON() method: 2012-11-30T01:21:00.000Z 
to UTCString() method: Fri, 30 Nov 2012 01:21:00 GMT 

toJSON() 메소드 인쇄 시간과 분을 잘못하지만 toString() 제대로 인쇄, 나는 그 이유가 뭔지 알고 싶어한다. Date 객체에 시간 오프셋을 추가해야합니까? 그렇다면 어떻게됩니까?

+0

을 : 당신은 초에이 값을 변환하고 날짜의 소인이를 추가해야? – xiaoyi

+0

toJSON 부분은 인도 시간이 아닌 그리니치 표준시 –

+0

GMT = 인도 시간으로 5시 30 분까지 시간과 분을 뺍니다. – xiaoyi

답변

8

date.toJSON()은 UTC-Date를 json-date 형식의 문자열로 인쇄합니다.

현지 시간을 인쇄하려면 오프셋을 분으로 반환하는 getTimezoneOffset()을 사용해야합니다. 부분이 잘못

var date = new Date(2012, 10, 30, 6, 51); 
new Date(date.getTime() + (date.getTimezoneOffset() * 60000)).toJSON() 
+0

내 질문의 경우 어떻게합니까, 나는 var date = new Date (2012, 10, 30, 6, 51)을 정의했다고 말합니다. defaultTimezoneOffset 메서드를 사용하여 나머지 5.30 시간을 추가하는 방법은 무엇입니까? –

+0

편집 내 대답 – hereandnow78

+0

이것은 내게 잘못된 결과를 제공합니다. Sushil Dravekar의 답변은 올바른 결과를 제공합니다. – mvermand

18
var date = new Date(); 
console.log(date.toJSON(), new Date(date.getTime() - (date.getTimezoneOffset() * 60000)).toJSON()); 
+5

이 올바른 대답이어야 체크! – abimelex

+0

@abimelex 너와 다른 사람들이 옳았다. 나는 대답을 수정했다. – hereandnow78

관련 문제