我在将我的日期格式转换成可以发送到数据库的良好格式时遇到了问题。默认情况下,我在dateTimePicker
中将当天设置为上午08:00当我想发送它的时候,它的格式是这样的,我试图实现的是"2020-12-01 08-00"
,所以它不仅格式不好,而且比所选择的时间早了一个小时。我尝试使用moment.js进行转换,但没有任何反应。下面是我尝试过的代码:
// form where I can pick the date //
ngOnInit() {
this.data= this.formBuilder.group({
id: [],
dateFrom: [this.setTime(), Validators.required],
dateTo: [this.getNextWeek(), Validators.required],
status: [-1],
});
}
// function where I try to convert the date to a useable form //
dataModify(object) {
let formattedObject = {
id: "",
dateFrom: object.dateFrom,
dateTo: object.dateTo,
status: object.status,
};
moment.utc(object.dateFrom).format('YYYY-MM-DD HH:mm');
moment.utc(object.dateTo).format('YYYY-MM-DD HH:mm');
return formattedObject;
}
发布于 2020-12-01 11:28:49
一般来说,您希望在数据库中将时间保存为UTC,然后在需要的地方(通常是客户端)进行转换。
我从你的问题中猜到你是在GMT+1。你可以手动进行转换,或者添加时刻时区:
https://www.npmjs.com/package/moment-timezone
然后,您可以像这样转换:
// Change 'Europe/Madrid' to whatever timezone you need
moment(object.dateFrom).tz('Europe/Madrid').format('YYYY-MM-DD HH:mm'))
好的是,如果你最终不得不为多个时区服务,你可以将所有的时间存储在UTC中,然后在需要的时候进行转换
发布于 2020-12-01 12:23:06
抱歉,没有必要使用momentjs来格式化日期。你可以用这个。
formatDate = (date) => {
const _date = new Date(date);
const day = _date.getDate();
const month = _date.getMonth() + 1;
const year = _date.getFullYear();
return `${year}-${month}-${day}`;
}
formatTime = (date) => {
const _date = new Date(date);
const hours = _date.getHours()
const minutes = _date.getMinutes();
const seconds = _date.getSeconds();
return `${hours}:${minutes}:${seconds}`;
}
toDateTimestamp = (date) => {
const dateStamp = this.formatDate(date);
const timeStamp = this.formatTime(date);
return `${dateStamp} ${timeStamp}`
}
https://stackoverflow.com/questions/65089563
复制