我正在尝试编写一个函数来格式化并在我的请求中的某些日期字段中指定过去或将来的日期。但是,我收到一个错误,说assignedDate不是一个函数。
function changeDate(numberOfDays) {
var assignedDate = new Date().toISOString();
assignedDate.setDate(assignedDate.getDate() - numberOfDays);
assignedDate.substr(0, assignedDate.length-5);
return assignedDate; }
然后我像第一次那样改变它;
function changeDate(numberOfDays) {
var assignedDate = new Date().toISOString();
var assignedDate.setDate(assignedDate.getDate() - numberOfDays);
var assignedDate.substr(0, assignedDate.length-5);
return assignedDate; }
然后它开始显示警告,表示" assignedDate已经定义"。
我也是一个新手,请让我知道你的解决方案。
感谢。
答案 0 :(得分:2)
您需要注意您正在创建的类型:
var assignedDate = new Date().toISOString();
new Date 创建一个Date对象,但 toISOString 返回一个字符串,因此 assignedDate 是一个字符串。当你这样做时:
assignedDate.setDate(assignedDate.getDate() - numberOfDays);
由于字符串没有 setDate 方法,因此会出现错误。只是不要做 toISOString 。
由于 assignedDate 现在是一个日期,因此您无法执行 assignedDate.substr 。如果您想格式化日期,请参阅Where can I find documentation on formatting a date in JavaScript?
以下使用 toISOString 来获取字符串,但请注意,这将是UTC日期,而不是本地日期,因此可能不是您想要的(因为日期在主机的持续时间内会有所不同)时区偏移)。
function changeDate(numberOfDays) {
// Start with a Date
var assignedDate = new Date();
// Adjust by the number of days
assignedDate.setDate(assignedDate.getDate() - numberOfDays);
// Get a formatted string (for UTC)
assignedDate = assignedDate.toISOString();
// Return the string
return assignedDate.substr(0, assignedDate.length-5);
}
console.log(changeDate(5));
答案 1 :(得分:0)
听到您试图减去/添加相应日期的天数。
你可以直接减去
var d = new Date();
d.setDate(d.getDate()-5);
答案 2 :(得分:-1)
您应该使用内部库moment
。
导入是这样完成的:
var moment = require('moment')
moment提供了一个非常易于使用和可读的API。
var fiveDaysAgo = moment().subtract(5, 'days');
您可以在Postman中的测试脚本中查找更多支持的库: Postman PM API Reference
关于片刻JS的文档可以在这里找到: Moment JS Docs