当以字符串格式提供时刻时,ISO格式不适用的警告。

问题描述 投票:1回答:1
const DATE_FORMAT = "YYYY-MM-DD";
const endDate = "2020-05-05T00:00:00.000Z" (dynamic value from service)
const appValidDate = moment(endDate).subtract(1, "days").format(DATE_FORMAT);
const currentDate = moment().startOf("day").format(DATE_FORMAT);
const validDate = moment(currentDate).isSameOrBefore(appValidDate);

我一直在尝试使用 moment 来比较两个日期。当运行这个程序时,我得到了下面的废弃警告。

Deprecation warning: value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.
Arguments:
[0] _isAMomentObject: true, _isUTC: false, _useUTC: false, _l: undefined, _i: Invalid date, _f: undefined, _strict: undefined, _locale: [object Object]
Error:

找到一些有用的stackoverflow链接。Moment.js比较两个日期时的废弃警告

但还是无法删除弃用警告。

所以根据文档,需要用字符串+格式,所以我就这样做了。

const DATE_FORMAT = "YYYY-MM-DD";
const endDate = "2020-05-05T00:00:00.000Z" (dynamic value from service)
const appValidDate = moment(endDate).subtract(1, "days").format(DATE_FORMAT);
const currentDate = moment().startOf("day").format(DATE_FORMAT);
const validDate = moment(currentDate, DATE_FORMAT).isSameOrBefore(appValidDate);

但问题是我们不能把endDate转换为字符串& 然后减去天数。如果我这样传递,得到Moment错误。

谁能帮我找到一个合适的解决方案。任何帮助将是非常感激的。

javascript node.js datetime momentjs
1个回答
0
投票

正如上面的评论中所解释的那样,使用以下方法进行日期比较 moment 实例。

返回的值由 .format() 是一个字符串,根据所选择的格式(可能是你的地区),可能会触发你看到的警告。

使用 .format() 当你想显示一个值时。

const DATE_FORMAT = "YYYY-MM-DD";
const endDate = "2020-05-05T00:00:00.000Z" //(dynamic value from service)
const appValidDate = moment(endDate).subtract(1, "days");
const currentDate = moment().startOf("day");
// or for a UTC "start of day"
// const currentDate = moment.utc().startOf('day')
const validDate = currentDate.isSameOrBefore(appValidDate);

console.log('appValidDate:', appValidDate.format(DATE_FORMAT))
console.log('currentDate:', currentDate.format(DATE_FORMAT))
console.log('validDate:', validDate)
<script src="https://momentjs.com/downloads/moment.js"></script>
© www.soinside.com 2019 - 2024. All rights reserved.