JavaScript의 Date 유형을 사용할 때는 주의해야 합니다.
6151 단어 JavaScript
날짜 형식
정황
예를 들어 자바스크립트new Date("2013-07-08 20:38:08")
를 사용하면 다음과 같이 브라우저마다 결과가 다르다.
Chrome, Opera, Vivaldi:// 地方時
> new Date("2013-07-08 20:38:08")
< Mon Jul 08 2013 20:38:08 GMT+0900 (JST)
Firefox:// 協定世界時
> new Date("2013-07-08 20:38:08");
< Date 2013-07-08T03:00:00.000Z
Safari:> new Date("2013-07-08 20:38:08")
< Invalid Date = $1
까닭
이렇게 인voliad가 발생한 원인new Date() is working in Chrome but not Firefox | StackOverlow은 다음과 같다.
the EMCAScript specification requires exactly one date format (i.e., YYYY-MM-DDTHH:\mm:\ss.sssZ) but custom date formats may be freely supported by an implementation: "If the String does not conform to that [ECMAScript-defined] format the function may fall back to any implementation-specific heuristics or implementation-specific date formats."Chrome and FF simply have different "implementation-specific date formats."
http://www.ecma-international.org/ecma-262/5.1/#sec-15.9.1.15 ECMAScript의 규격YYYY-MM-DDTHH:mm:ss.sssZ
은 ISO8601 방식만 정의한 것이다.다른 형식은 브라우저에 따라 달라지므로 이전에 설명한 대로 결과가 일치하지 않습니다.
처리 방법
API에 따라 값이 2013-07-08 20:38:08
인 경우 다음과 같이 수정합니다.// MySQL から返ってくる日付の値を ISO 8601 に変換
function replaceDate(dateStr) {
const regexp = /^([0-9]{2,4})-([0-1][0-9])-([0-3][0-9])(?:( [0-2][0-9]):([0-5][0-9]):([0-5][0-9]))?$/;
return dateStr.replace(regexp, (match, year, month, day, hour, minutes, seconds) => {
return `${year}-${month}-${ day}T${hour}:${minutes}:${seconds}.000+09:00`;
});
}
인용하다
// 地方時
> new Date("2013-07-08 20:38:08")
< Mon Jul 08 2013 20:38:08 GMT+0900 (JST)
// 協定世界時
> new Date("2013-07-08 20:38:08");
< Date 2013-07-08T03:00:00.000Z
> new Date("2013-07-08 20:38:08")
< Invalid Date = $1
// MySQL から返ってくる日付の値を ISO 8601 に変換
function replaceDate(dateStr) {
const regexp = /^([0-9]{2,4})-([0-1][0-9])-([0-3][0-9])(?:( [0-2][0-9]):([0-5][0-9]):([0-5][0-9]))?$/;
return dateStr.replace(regexp, (match, year, month, day, hour, minutes, seconds) => {
return `${year}-${month}-${ day}T${hour}:${minutes}:${seconds}.000+09:00`;
});
}
Reference
이 문제에 관하여(JavaScript의 Date 유형을 사용할 때는 주의해야 합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/unbabel/items/12487e85525ba1ec1618텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)