reactjs - 没有时区的 React Material UI Datepicker
问题描述
我正在尝试开发一个 React Material ui datepicker。它在mysql数据库中“发布”时区:2020-08-16T20:06:09.344Z
格式应该是这样的:16.08.2020
如何在 React 前端或 Java 后端更改字符串格式?在 Java 和 mysql 中,日期是一个字符串。
export default function Speisereste() {
const classes = useStyles();
const [firstLoad, setLoad] = React.useState(true);
const [datum, setDatum] = React.useState(new Date());
const handleDatumChange = (date) => {
setDatum(date);
};
console.log(datum);
const [message, setMessage] = React.useState("Nothing saved in the session");
async function sampleFunc(toInput) {
const response = await fetch("/speisereste", {
method: "POST", // *GET, POST, PUT, DELETE, etc.
mode: "cors", // no-cors, *cors, same-origin
cache: "no-cache", // *default, no-cache, reload, force-cache, only-if-cached
credentials: "same-origin", // include, *same-origin, omit
headers: {
"Content-Type": "application/json"
// 'Content-Type': 'application/x-www-form-urlencoded',
},
redirect: "follow", // manual, *follow, error
referrerPolicy: "no-referrer", // no-referrer, *client
body: JSON.stringify(toInput) // body data type must match "Content-Type" header
});
let body = await response.json();
console.log(body.id);
setMessage(body.id ? "Data sucessfully updated" : "Data updating failed");
}
const handleSubmit = variables => {
const toInput = { datum };
sampleFunc(toInput);
setDatum(datum);
};
if (firstLoad) {
// sampleFunc();
setLoad(false);
}
return (
<FormControl required className={classes.formControl}>
<Grid item xs={12}>
<MuiPickersUtilsProvider utils={DateFnsUtils}>
<DatePicker
label="Datum"
value={datum}
format="dd/MM/yyyy"
onChange={handleDatumChange}
animateYearScrolling
/>
</MuiPickersUtilsProvider>
</Grid>
</FormControl>
</Grid>
解决方案
您可以使用 Javascript 日期对象:
var d = new Date('2020-08-16T20:06:09.344Z');
console.log(d.getUTCHours()); // Hours
console.log(d.getUTCMinutes());
console.log(d.getUTCSeconds());
或使用 momentjs:http ://momentjs.com/
var localTime = moment().format('YYYY-MM-DD'); // store localTime
var proposedDate = localTime + "T00:00:00.000Z";
现在您已经有了正确的格式,如果它有效,请解析它:
var isValidDate = moment(proposedDate).isValid();
// returns true if valid and false if it is not.
要获得时间部分,您可以执行以下操作:
var momentDate = moment(proposedDate)
var hour = momentDate.hours();
var minutes = momentDate.minutes();
var seconds = momentDate.seconds();
// or you can use `.format`:
console.log(momentDate.format("YYYY-MM-DD hh:mm:ss A Z"));
推荐阅读
- r - 使用 Mac 和 Windows 编织到 PDF 具有不同的输出尺寸
- python - 使用 BS4 抓取 WSJ 存档
- mysql - 请问这个查询可以解释一下吗?
- javascript - 如何在类中推送 html php 内容
- mongodb - Mongodb:活动:失败(结果:退出代码)
- widget - 小部件和文本输入未出现在 Kivy 屏幕上
- python - 在内联赋值中从理解生成元组时遇到问题
- python - Django中的用户级注册
- java - 为什么当我使用带有图形的 eclipse Window Builder 时,它不起作用?
- data-visualization - 使用画面中的参数操作动态增加或减少百分比