typescript - Spara valt datum och inte UTC-datum i react redux
Jag försökte följa denna länk och hitta en lösning med hjälp av denna fråga.
Den här frågan hade en del av informationen som jag behöver men den gav mig inget svar. Den hade nästan det jag ville ha men Redux tillåter mig inte att skicka utgångsdatumet i staten.
Jag skriver en React-applikation med Redux (TypeScript v. ^3.8) och har en dateTimePicker-komponent som använder npm-paketet "react-datepicker" version: v.2.15. Jag väljer ett värde från pickern, låt oss säga 07/07/2020, men när jag sparar det i ett state med en reducer,
action.payload är av typen Tue Jul 07 2020 00:00:00 GMT+0300 (Eastern European Summer Time)
men inuti tillståndet har jag nu 2020-07-06T21:00:00.000Z.
Min förståelse är att egenskapen som datumet sparas i är av typen datum, men formatet "YYYY-MM-DDTHH:mm:ss.SSSZ" är en ISOstring() i UTC.
Hur kan jag bara skicka det valda värdet (07/07/2020) i staten, utan att ta hänsyn till lokal/UTC-datum och tidszon? Jag siktar på att bara ha detta 2020-07-07T00:00:00.000Z
I min reducer, hur ska jag manipulera datumet för att få ovanstående resultat? Min kodsnutt är denna:
export const changeGeneralFormDateReducer = (
state: IState,
action: IAction<Date>
): IState =>
produce(state, (draftState: IState) => {
draftState.generalForm.Date = action.payload;
});
Svar #1
använd något liknande detta
draftState.generalForm.Date = new Date(
Date.UTC(
action.payload.getFullYear(),
action.payload.getMonth(),
action.payload.getDate()
)
);
