#javascript #reactjs #date #jsx
#javascript #reactjs #Дата #jsx
Вопрос:
Я создаю функцию поиска с фильтрами для своего веб-приложения. У меня есть дата начала и дата окончания для моих запросов, но по умолчанию я хочу, чтобы дата окончания всегда отображала сегодняшнюю дату, а дата начала отображала дату за 1 год до любой «сегодняшней даты». было бы.
Код:
import React from "react";
import { Redirect, Route, Switch } from "react-router-dom";
import { Paper } from "@material-ui/core";
class MainSection extends React.Component {
static contextType = AppContext;
constructor(props) {
super(props);
this.state = {
searchTerm: "",
startDate: new Date(),
endDate: new Date(),
update: (data) => {
console.debug(data)
this.setState(data);
},
};
}
В настоящее время я оставил StartDate пустым, чтобы избежать путаницы.
Ожидаемый результат будет:
На сегодня:
Дата начала: 2019/10/08
Дата окончания: 2020/10/08
На завтра:
Дата начала: 2019/10/09
Дата окончания: 2020/10/09
И т.д…
Стоит упомянуть, что я новичок в программировании, поэтому, если я упускаю что-то очевидное, пожалуйста, полегче со мной!
Приветствуются рекомендации по редактированию вопросов, чтобы я мог изучить этикет переполнения стека.
Ответ №1:
var date = new Date();
date.setFullYear(date.getFullYear() - 1);
console.log(date)
чтобы использовать его в своем коде:
class MainSection extends React.Component {
static contextType = AppContext;
constructor(props) {
super(props);
const oneYearAgo = new Date();
oneYearAgo.setFullYear(oneYearAgo.getFullYear() - 1);
this.state = {
searchTerm: "",
startDate: oneYearAgo,
endDate: new Date(),
update: (data) => {
console.debug(data)
this.setState(data);
},
};
}
Комментарии:
1. Спасибо! Прошу прощения, но как мне интегрировать это решение в свой код в React?
2. пожалуйста, выберите в качестве принятого ответа, если это сработало для вас
3. Спасибо! Намного проще, чем я думал. Могу сказать, что сегодня я кое-чему научился!
Ответ №2:
Вы можете использовать moment.js библиотека для всех требований к обработке дат. Он имеет функцию вычитания, которую вы можете использовать, чтобы вернуть дату на 1 год назад. Для React есть npm с реактивным моментом, который будет удобен.
ниже приведены ссылки.. https://www.npmjs.com/package/react-moment
Ответ №3:
взгляните на этот код
var date = new Date();
document.querySelectorAll('#originalDate')[0].innerText = date.toISOString()
date.setFullYear(date.getFullYear() - 1);
document.querySelectorAll('#editedDate')[0].innerText = date.toISOString()
<p id="originalDate"> </p>
<p id="editedDate"> </p>
Комментарии:
1. Спасибо! Как бы я применил это в своем коде в React? У меня отображаемые даты преобразованы в ISO на страницах просмотра, так что это не проблема.