日期格式在 redux devtools 中表现得很奇怪
Date format acting strange in redux devtools
我正在使用现有代码库,并且现有代码需要来自端点的日期。预期值为 ISO 字符串(即 "2020-01-09T07:41:02.6025984-05:00"
):
// in my sagas:
export function* handleGetServerTime(): Generator {
try {
const response = (yield call(
axios.get,
"/api/server/time"
)) as AxiosResponse;
// Format the response time string into a Date object
const time = new Date(response.data);
console.log(time);
yield put(ActionCreators.GetServerTimeSuccess.create(time));
} catch (error) {
// ...
}
}
如您所见,代码获取 ISO 字符串,从中创建一个 new Date
,然后将其发送到 action 和 reducer,后者将其作为 new Date
保存到存储中.
当我打开我的 redux devtools 时,我再次看到一个 ISO 时间字符串:
然而,上面的 console.log 语句打印了我们通常在 运行 a new Date
: Mon Apr 05 2021 11:56:25 GMT-0700 (Pacific Daylight Time)
时看到的内容。当我进入我的控制台并检查 store.getState().somewhere.timeFromServer
.
时,我得到了同样的结果
redux devtools 是否有一些默认行为来显示 Date
对象作为其 ISO 字符串?
请注意,我一点也不喜欢这种编程模式 - 我宁愿存储从服务器返回的原始 ISO 字符串,并在我的前端代码中进行任何日期操作。这让我整个早上都陷入了循环,因为来自服务器的 ISO 字符串 f= 和 devtools 中显示的字符串 不一样 !从 ISO 字符串转换为 new Date
并再次转换回来将去除我不想丢失的 UTC 时间偏移量。
您不应将值保存在不能 serialized, the devtools have to show a Date object in some way (convert to text) so they use toISOString 的状态中,但此 iso 字符串已本地化为祖鲁时间。为防止混淆,最好保存字符串而不是将其转换为日期并在选择器中进行转换。
我正在使用现有代码库,并且现有代码需要来自端点的日期。预期值为 ISO 字符串(即 "2020-01-09T07:41:02.6025984-05:00"
):
// in my sagas:
export function* handleGetServerTime(): Generator {
try {
const response = (yield call(
axios.get,
"/api/server/time"
)) as AxiosResponse;
// Format the response time string into a Date object
const time = new Date(response.data);
console.log(time);
yield put(ActionCreators.GetServerTimeSuccess.create(time));
} catch (error) {
// ...
}
}
如您所见,代码获取 ISO 字符串,从中创建一个 new Date
,然后将其发送到 action 和 reducer,后者将其作为 new Date
保存到存储中.
当我打开我的 redux devtools 时,我再次看到一个 ISO 时间字符串:
然而,上面的 console.log 语句打印了我们通常在 运行 a new Date
: Mon Apr 05 2021 11:56:25 GMT-0700 (Pacific Daylight Time)
时看到的内容。当我进入我的控制台并检查 store.getState().somewhere.timeFromServer
.
redux devtools 是否有一些默认行为来显示 Date
对象作为其 ISO 字符串?
请注意,我一点也不喜欢这种编程模式 - 我宁愿存储从服务器返回的原始 ISO 字符串,并在我的前端代码中进行任何日期操作。这让我整个早上都陷入了循环,因为来自服务器的 ISO 字符串 f= 和 devtools 中显示的字符串 不一样 !从 ISO 字符串转换为 new Date
并再次转换回来将去除我不想丢失的 UTC 时间偏移量。
您不应将值保存在不能 serialized, the devtools have to show a Date object in some way (convert to text) so they use toISOString 的状态中,但此 iso 字符串已本地化为祖鲁时间。为防止混淆,最好保存字符串而不是将其转换为日期并在选择器中进行转换。