JSON.stringify() 및 JSON.parse() 사용 시 Date() 관련 문제
JavaScript를 사용하여 두 시간의 차이를 계산하려고 합니다.기본적인 수학이지만 사용하는 동안 문제가 좀 있는 것 같습니다.JSON.stringify()
그리고.JSON.parse()
.
내가 왜 이런 걸 써야 하는지 궁금하다면JSON.stringify()
지금까지 기능하고 있는 것은 로컬 스토리지를 사용하여 클라이언트 측에 데이터를 저장하고 클라이언트가 웹사이트에 다시 접속할 때마다 사용하기 때문입니다(서버에 더 많은 요청을 하는 것보다 더 빠릅니다).그 데이터는 보통 가끔 갱신되기 때문에 (다른 웹사이트에서 API를 통해 데이터를 취득하고 있습니다)그래서 셋업 합니다.data_update
다른 데이터와 함께 저장하고 있습니다.
이렇게 하면 로컬 스토리지에서 저장된 데이터를 가져와 두 데이터 간의 차이점을 확인할 수 있습니다.data_update
(날짜/시간) 및 체크가 실행된 시간/날짜가 일주일/일/etc를 초과하는지 확인합니다.
그래서 JSON 기능을 사용하고 있습니다.문제는 로컬 스토리지에서 데이터를 구문 분석할 때 날짜가 다른 것 같다는 것입니다.Date()
물건.
다음 작업을 수행하려고 합니다.
var x = JSON.parse(JSON.stringify(new Date()));
var y = JSON.parse(this.get_local_storage_data(this.data_cache_key)); // the data object stored on local storage
var q = y.data_update; // this is the variable where the Date() was stored
console.log(Math.floor((x-q)/1000));
상기 내용이 반환됩니다.null
그리고 제가 보고 싶을 때Math.floor(x)
결과, 반환됩니다.null
다시.
그럼 이 상황에서 제가 뭘 할 수 있을까요?이것에 대한 해결 방법이 있나요?
JSON.stringify for a Date의 출력을 보면 다음과 같이 표시됩니다.
JSON.stringify(new Date())
문자열이 생성됩니다.JSON에는 JSON.parse가 자동으로 Date 객체로 되돌아가는 Date 객체의 원시적인 표현은 없습니다.
Date 객체의 생성자는 날짜 문자열을 사용할 수 있으므로 다음 작업을 수행하여 해당 문자열 값을 날짜로 되돌릴 수 있습니다.
var x = new Date(JSON.parse(JSON.stringify(new Date())));
그럼 계산이 되겠네요.
x = new Date(JSON.parse(JSON.stringify(new Date())))
y = new Date(JSON.parse(JSON.stringify(new Date())))
y - x
=> 982
JSON.stringify(new Date())
돌아온다
'2013-10-06T15:32:18.605Z'
다행인 건Date.prototype.toISOString()
권장 답변에서 알 수 있듯이 날짜를 사용할 때 문자열로 변환됩니다.JSON.stringify
.
이 사용 사례에 적합한 또 다른 접근법은 다음을 사용하여 밀리초 단위로 시간을 저장하는 것입니다.
// Date.now() instead of new Date()
const millis = Date.now();
console.log(millis);
// same output as input
console.log(JSON.parse(JSON.stringify(millis)));
그래야 어떤 일이 일어날지 확신할 수 있다.JSON.stringify
사용 시 동일하게 표시됨JSON.parse
.
또한 2밀리초의 값을 가진 경우 날짜를 쉽게 비교할 수 있습니다.<
★★★★★★★★★★★★★★★★★」>
.
또한 밀리초를 언제든지 날짜로 변환할 수 있습니다(일반적으로 사용자에게 렌더링하기 전).
const millis = Date.now();
console.log(millis);
console.log(new Date(millis));
메모: 적어도 데이터베이스에서는 밀리초를 날짜 표시로 사용하지 않는 것이 좋습니다.https://stackoverflow.com/a/48974248/10551293
언급URL : https://stackoverflow.com/questions/11491938/issues-with-date-when-using-json-stringify-and-json-parse
'programing' 카테고리의 다른 글
Json Schema 파일 확장자 (0) | 2023.02.14 |
---|---|
리액트 후크를 사용하여 자기 증가 카운터 구현 (0) | 2023.02.14 |
Oracle: SQL 서버용 Profiler와 같은 쿼리를 추적하는 툴이 있습니까? (0) | 2023.02.14 |
IntelliJ는 그라들을 사용한 Spring Boot 어플리케이션을 종료하지 않습니다. (0) | 2023.02.14 |
json.dumps와 json.load의 차이점은 무엇입니까? (0) | 2023.02.14 |