gpt4 book ai didi

javascript - Angular Material datepicker + moment,为后端序列化 moment 对象?

转载 作者:行者123 更新时间:2023-11-29 15:08:36 26 4
gpt4 key购买 nike

我有一个日期选择器,使用带有语言环境的时刻适配器,日期一切正常,但我无法在后端转换它们。我使用 formGroup.value

从表单中获取它

在将它发送到后端之前(通过 angular firebase)它看起来像:

from: Moment
_d: Sat Jul 06 2019 01:00:00 GMT+0100 (British Summer Time) {}
_i: {year: 2019, month: 6, date: 6}
_isAMomentObject: true
_isUTC: true
_isValid: true
_locale: Locale {_calendar: {…}, _longDateFormat: {…}, _invalidDate: "Invalid date", ordinal: ƒ, _dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, …}
_offset: 0
_pf: {empty: false, unusedTokens: Array(0), unusedInput: Array(0), overflow: -1, charsLeftOver: 0, …}
__proto__: Object

但是在后端记录它,看起来像:

from:
> { _isAMomentObject: true,
> _i: [Object],
> _isUTC: true,
> _pf: [Object],
> _locale: [Object],
> _d: {},
> _isValid: true,
> _offset: 0 },

值为空,当我尝试从中获取任何类型的日期时,当然会抛出 TypeErrors。

我通过 @angular/fire 作为 httpCallable 函数发送它。

编辑:当前的解决方法是相当 hacky/unpreffered:

    let oldFrom: moment.Moment = this.from.value;
let oldTo: moment.Moment = this.to.value;
this.ReportForm.controls.from.setValue(oldFrom.toISOString());
this.ReportForm.controls.to.setValue(oldTo.toISOString());
this.submitted.emit(this.ReportForm.value);
this.ReportForm.controls.from.setValue(oldFrom);
this.ReportForm.controls.to.setValue(oldTo);

我需要将它改回 moment 对象,否则它们将在所有 future 日期停止工作。

最佳答案

您可以在发送到后端之前使用格式

momentDate.format('YYYY-MM-DD')

我通常做的是

momentDate.utc().toISOString()

关于javascript - Angular Material datepicker + moment,为后端序列化 moment 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56967421/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com