2017-05-22 1 views
0
크롬 날짜 변환에 대한 정확한 결과를 제공하지

:크롬 58.0.3029.110 버전으로 변환되지 날짜

날짜 :이 일을 "2017-05-22T14 : 00 : 00"

을 크롬 콘솔 :

new Date("2017-05-22T14:00:00"); 

출력은 : 나는이에이기 때문에

Mon May 22 2017 14:00:00 GMT+0530 (IST) 

이 잘못 IST. 오히려 출력 결과가

Mon May 22 2017 19:30:00 GMT+0530 (IST) 

으로 정확한 결과를 제공해야합니다. 크롬이 바로 전에 있었지만 최신 업데이트에 문제가 있다고 생각합니다.

날짜 문자열에 Z가 추가되면 정확한 날짜 값이 산출됩니다.

new Date("2017-05-22T14:00:00Z"); 
+0

문자열 형식 생성자를 사용하는 기술적 인 이유가 있습니까? [MDN] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date)은 그것을 훌륭하게 요약합니다 : Date 생성자로 date 문자열을 파싱합니다. (그리고 Date.parse, 그들은 브라우저상의 차이와 불일치로 인해서 사용하지 않는 것이 좋습니다. * –

+0

날짜를 "2017-05-22T14 : 00 : 00"문자열로 서비스에서 수신하는 형식이므로 서비스를 수정할 수 없습니다. 올바른 결과를 얻으려면 어떻게해야할까요? –

+0

크롬에 신고 됨 : https://bugs.chromium.org/p/chromium/issues/detail?id = 725080 & can = 2 & start = 0 & num = 100 & q = & colspec = ID % 20Pri % 20M % 20Stars % 20ReleaseBlock % 20Component % 20Status % 20Owner % 20Summary % 20OS % 20Modified & groupby = & sort = –

답변

2

입력 값이 올바르게 해석되고 있습니다. ECMAScript를 2015 년 (ES6) 섹션 20.3.1.16 상태 :

시간대 오프셋가없는 경우, 날짜와 시간은 현지 시간로 해석됩니다.

이것은 ISO-8601 표준과도 일치합니다.

ECMAScript의 이전 버전에서는 오프셋이 제공되지 않은 경우 UTC로 간주했습니다. 이는 ISO-8601에 위배되며 다양한 환경에서 일관되게 구현되지 않았습니다.

당신이 입력을 원하는 경우

그런 다음 입력 문자열의 일부로서, +00:00, 또는 Z 중 하나를 오프셋 제공해야 UTC로 해석 될 수 있습니다. 디버그 콘솔에 로그인 할 때 Date 객체가 표시되는 방법에 대해 얘기하는 경우

는, 그는 스펙에 정의되어 있지 않습니다. 일부 환경에서는 date.toString()의 출력을 볼 수 있으며 비표준 형식으로 현지 날짜 및 시간을 표시하며 다른 환경 (예 : FireFox)에서는 date.toISOString()의 출력이 표시됩니다.이 출력에는 UTC 날짜 및 시간이 표시됩니다 ISO-8601 형식입니다.

표시 할 내용이 없으므로 둘 중 어느 것이 유효 할 것입니다. 특정 출력을보고 싶다면 Date 개체를 기록하지 말고 문자열을 반환하는 개체에서 함수를 호출하고 대신 해당 개체를 기록하십시오.

+0

그렇다면 동일한 dateTime 문자열 즉, 끝에 "Z"가없는 크롬이 UTC로 간주하여 localTimeZone으로 변환했기 때문에 이전에 올바르지 않았습니까? 나는 크롬 갱신 후에 이것을보고있다. –

+0

또한 사파리가 사파리가 UTC로 "Z"가없는 dateTime을 고려하고 있기 때문에 사파리가 잘못하고 있다는 것을 의미합니다. 크롬이 이전에이를 수행 했으므로 로컬 시간대로 변환합니다. –

+0

ISO8601 기준으로 오프셋이없는 값은 현지 시간입니다. ES5.1 이하에서는이 오류가 있었으며 ES6에서이를 수정했습니다. 이전에는 일부 브라우저가 로컬 시간으로 가져간 것이 있고 일부는 UTC로 사용했습니다. 요즘 모든 브라우저는 현지 시간으로 취급해야합니다. Safari의 최신 버전입니까? 그렇다면 버그가 있습니다. –

관련 문제