2012-08-14 2 views
9

Date 오브젝트의 toString()toLocaleString() 메소드 간의 차이점을 JavaScript로 이해할 수 없습니다. 내가 아는 한가지는 Date 개체를 문자열로 변환해야 할 때마다 toString()이 자동으로 호출된다는 것입니다.JavaScript : 날짜의 toString() 및 toLocaleString() 메소드 간의 차이

​var d = new Date(); 
document.write(d + "<br />"); 
document.write(d.toString() + "<br />"); 
document.write(d.toLocaleString()); 

을 그리고 출력은 다음과 같습니다 :

다음 코드는 항상 동일한 결과를 반환

Tue Aug 14 2012 08:08:54 GMT+0500 (PKT) 
Tue Aug 14 2012 08:08:54 GMT+0500 (PKT) 
Tue Aug 14 2012 08:08:54 GMT+0500 (PKT) 
기본적으로

답변

12

https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date/toLocaleString

는, 그것이 포맷 할 것입니다 방법에 날짜 형식을 함수가 호출 된 컴퓨터에서 세계 대부분의 지역에서 미국의 달 전, 달의 전날.

편집 :

일부 사람들은 위의 참조가 ECMAScript spec에서이 문제를 얼마나 믿을 필요가 없다고 지적 때문에 :

15.9.5.2 Date.prototype.toString ()

이 기능 String 값을 반환합니다. String의 내용은 구현에 의존하지만 현재 시간대의 날짜를 사람이 읽을 수있는 형태로 표현하기위한 것입니다.

15.9.5.5 Date.prototype.toLocaleString ()

이 기능은 문자열 값을 반환합니다. String의 내용은 구현에 의존 합니다만, 호스트 환경의 현재의 로케일의 규칙에 대응하는, 인간이 읽을 수있는 편리한 형식에서 현재의 타임 존의 Date를 나타 내기 위해서 (때문에) 사용됩니다.

당신이 희망 대부분의 구현은 사양을 반영한다고 가정 할 수 있기 때문에이 차이는 toString() 그냥 읽을 수 있도록 요구된다 toLocaleString()이 (가)에 따라 사용자의 기대와 일치해야하는 형식으로 읽을 수 있어야한다는 것입니다 그들의 장소.

+0

그래, 무슨 차이가 있니? –

+2

https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date/toString - toString은 항상 미국 영어로 날짜의 문자열 표현을 반환합니다. – phenomnomnominal

+0

내 시스템의 현지화 설정을 변경 한 다음 테스트했습니다. 그 차이는 이제 분명했습니다. 감사! –

5

운영 체제 로캘의 규칙을 사용하여 날짜를 문자열로 변환합니다. 연간 운영 시스템이 제대로 형식을하지 않는 변환 할 때

https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date/toLocaleString

toLocaleString는 toString 유사하게 동작합니다.

+0

그래,하지만 차이점은 뭐니? –

+1

하나는 운영 체제마다 다릅니다. 다른 하나는 –

+0

이 아닙니다. @phenomnomnominal에게 감사드립니다. 나는 또한 귀하의 답변에 투표 :-) –

1

많은 참고 자료가 있지만 권위는 없습니다.Mozilla의 문서는 브라우저 용 ECMAScript 버전 인 JavaScript 용입니다. 다른 브라우저는 다른 구현을 사용하므로 MDN 문서가 유용하지만 권한있는 것은 아니며 공식 Mozilla 문서가 아닌 커뮤니티 위키이기도하므로 다른 브라우저에 반드시 적용되는 것은 아닙니다.

확실한 참조는 ECMAScript 언어 사양입니다. 여기서 Date.prototype.toStringDate.prototype.toLocaleString의 동작은 브라우저 독립적 인 측면에서 설명됩니다.

주목할만한 두 가지 방법 모두 문자열은 구현 종속성입니다. 즉, 다른 브라우저는 다른 문자열을 반환합니다.

+0

흠 내 질문이 유효했습니다. :-) 정확한 차이와 브라우저 동작에 혼동이 있습니다. –

+0

@ MuhammadAhmadZafar- 예, 유효한 질문입니다. 결론은 대부분의 브라우저가 * toString *에 대해 미국 중심의 날짜 형식을 반환하는 것처럼 보이지만 이는 개발자에게 달려 있으며 대다수의 브라우저 사용자가 미국 날짜 형식을 정상적으로 사용하지 않기 때문에 바뀔 수 있습니다. 또한 지역 설정을 고려할 때도 일부는 2012 년 8 월 10 일 및 10/08/2012라고 표시 될 수 있습니다. – RobG

2

Chrome의 콘솔에서 날짜를 확인한 결과 프리젠 테이션 형식이 달라졌습니다. 희망이 도움이 될 수 있습니다.

var d = new Date(); 

console.log(d.toLocaleString()); //"04.09.2016, 15:42:44" 
console.log(d.toString());  //"Sun Sep 04 2016 15:42:44 GMT+0300 (FLE Daylight Time)"