Dateの時間が変わる
JavaScript
new Date();
結果は
Fri Jul 12 2019 10:00:00 GMT+0900 (日本標準時)
JavaScript
JSON.stringify({"now": new Date()});
結果は
"{"now":"2019-07-12T01:00:00.000Z"}"
10時から1時に変わって困った
JSON.stringifyでも日本時間にしたい。
なぜDateが変わるのか
JavaScript
new Date().toJSON();
結果は
"2019-07-12T01:00:00.000Z"
Date.prototype.toJSON
が原因らしい。
Date.prototype.toJSON
を上書きすればいいらしいが標準クラスを上書きしたくない。
JSON.stringifyのreplacerを使う
JavaScript
JSON.stringify({"now": new Date()}, function(key, value) {
if (this[key] instanceof Date) {
return this[key].toString();
}
return value;
});
結果は
"{"now":"Fri Jul 12 2019 10:00:00 GMT+0900 (日本標準時)"}"
となり、日本時間にできた
JSON.stringify
の構文は
JSON.stringify(value[, replacer[, space]])
Thanks
How to JSON stringify a javascript Date and preserve timezone - Stack Overflow
解法のアイデアはネタ元からだが日本語で書くことに意味があるのだ