developer tip

new Date ()는 Chrome과 Firefox에서 다르게 작동합니다.

optionbox 2020. 9. 6. 09:30
반응형

new Date ()는 Chrome과 Firefox에서 다르게 작동합니다.


날짜 문자열을 Date자바 스크립트 로 변환 하려면 다음 코드를 사용하십시오.

var date = new Date('2013-02-27T17:00:00');
alert(date);

'2013-02-27T17:00:00' 서버에서 JSON 개체의 UTC 시간입니다.

그러나 위 코드의 결과는 Firefox와 Chrome에서 다릅니다.

Firefox는 다음을 반환합니다.

Wed Feb 27 2013 17:00:00 GMT+0700 (SE Asia Standard Time)

Chrome은 다음을 반환합니다.

Thu Feb 28 2013 00:00:00 GMT+0700 (SE Asia Standard Time) 

1 일이 다르지만 예상되는 올바른 결과는 Chrome의 결과입니다.

데모 코드 : http://jsfiddle.net/xHtqa/2/

둘 다에서 동일한 결과를 얻으려면이 문제를 어떻게 해결할 수 있습니까?


UTC의 올바른 형식은 다음과 같습니다 2013-02-27T17:00:00Z(Z는 Zulu 시간). Z올바른 UTC datetime 문자열을 얻으려면 존재하지 않는 경우 추가 하십시오.


예, 안타깝게도 날짜 구문 분석 알고리즘은 구현에 따라 다릅니다. 사양에서Date.parse (에서 사용됨 new Date) :

문자열은 문자열의 내용에 따라 현지 시간, UTC 시간 또는 다른 시간대의 시간으로 해석 될 수 있습니다. 이 함수는 먼저 날짜 시간 문자열 형식 ( 15.9.1.15 ) 에서 호출 된 규칙에 따라 문자열의 형식을 구문 분석하려고합니다 . 문자열이 해당 형식을 따르지 않는 경우 함수는 구현 별 휴리스틱 또는 구현 별 날짜 형식으로 대체 될 수 있습니다.

Date생성자 가 (아마도) 현지 시간대를 사용하지 않도록 하려면 시간대 정보와 함께 datetime 문자열을 사용하십시오 (예 :) "2013-02-27T17:00:00Z". 그러나 모든 브라우저에서 신뢰할 수있는 구문 분석을 수행하는 형식을 찾기는 어렵습니다. ISO 형식은 IE <8에서 인식되지 않습니다 ( JavaScript : Date.parse로 ISO-8601 날짜 문자열 구문 분석을 지원하는 브라우저 참조 ). 더 나은 방법은 unix 타임 스탬프 (예 : unix epoch 이후 밀리 초)를 사용하거나 정규 표현식을 사용하여 해당 부분에서 문자열을 분리 한 다음 Date.UTC.


여기서 한 가지를 찾았습니다. 기본 Firefox Inspector 콘솔에 버그가있는 것 같습니다. 기본 Inspector에서 "new Date ()"를 실행하면 잘못된 시간대, GMT 로케일로 날짜가 표시되지만 Firebug Extension Console에서 동일한 명령을 실행하면 날짜가 표시됩니다. 표시된 시간대는 올바른 시간대 (GMT-3 : 00)를 사용합니다.


moment.js를 사용해보십시오. 모든 브라우저에서 매우 잘 작동하고 비슷한 방식으로 작동합니다. 많은 서식 옵션이 제공됩니다. New Date ( 'date') 대신 moment ( 'date'). format ( "") 사용


FireFox가 Chrome과 동일한 결과를 반환하지 않는 것으로 나타났습니다. 날짜에 대해 kendo.toString에서 사용하는 형식이 차이를 만드는 것 같습니다.

마지막 콘솔 결과는 내가 필요한 것입니다.

여기에 이미지 설명 입력

참고 URL : https://stackoverflow.com/questions/15109894/new-date-works-differently-in-chrome-and-firefox

반응형