【问题标题】:function nextWeek(date) in JavaScriptJavaScript 中的函数 nextWeek(date)
【发布时间】:2021-07-19 03:08:42
【问题描述】:

我正在对课程日期进行 javascript 评估 这是评估: "编写返回日期 7 天的 nextWeek(date) 函数的主体 在输入中给出的日期之后” date 始终是一个已定义的 Date 对象

所以我在下面写了这段代码:

function nextWeek(date){
var today=new Date();
var nextweek=new Date(today.getFullYear(),today.getMonth(),today.getDate()+7);
return nextweek;
}
var d=new Date();
console.log(d);
console.log(nextWeek(d));

结果是:

“2021-04-25T15:02:16.234Z”

“2021-05-01T22:00:00.000Z”

对我来说这是正确的,因为“2021-04-25T15:02:16.234Z”之间有一周(7 天)之久 和“2021-05-01T22:00:00.000Z”

但是他们告诉我我的代码是错误的,我不知道它有什么问题, 你知道上面的代码有什么问题吗?

【问题讨论】:

  • 取决于他们为什么认为这是错误的。
  • 这并没有,但它可能只是没有按照他们认为应该做的方式去做。存在一些问题: 1. 缺乏缩进。 2. 使用var(在现代JavaScript中,总是使用constlet)。 3. 创建一个日期以分配给today,然后立即用不同的值覆盖它——没有理由创建第一个日期。但是你前进7天的方式很好。也许他们不明白Date 自动处理换行到下个月。感谢您返回一个新的Date,而不是修改给您的那个。
  • 他们说该解决方案不适用于当前日期和另一个日期,他们还说我的解决方案不必修改输入日期
  • @bassey 将您的上述评论放在应该一直存在的实际问题中,我们不是知道他们认为错误的心灵感应者
  • 没关系,下面的解决方案都可以

标签: javascript


【解决方案1】:
function nextWeek(date){
  var today=new Date(); // Remove this
  var nextweek=new Date(today.getFullYear(),today.getMonth(),today.getDate()+7); // Change today -> date
  return nextweek;
}
var d=new Date();
console.log(d);
console.log(nextWeek(d)); 

// Simple way of doing it.
function nextWeek(date) {
  date.setDate(date.getDate() + 7);
  return date;
}

【讨论】:

  • 您的答案中有两个函数声明。使用最后一个(因为它被吊起)。此外,该函数会修改原始日期。
  • @KooiInc 第二个函数只是他现有代码的增强/重构形式。它不一定是那样的。我在上面添加了一条评论 //简单的做法
【解决方案2】:

这可能是一个单行:

const now = new Date();
console.log(`now: ${now.toLocaleString()}`);
console.log(`a week from now: ${nextWeek4SomeDate(now).toLocaleString()}`);
console.log(`check: now is still now? ${now.toLocaleString()}`);

function nextWeek4SomeDate(date) { 
  return new Date(new Date(date).setDate(date.getDate() + 7));
//        |       |              └─ returns adjusted date as a number value
//        |       |                 i.e. the number of milliseconds between 
//        |       |                 1 January 1970 00:00:00 UTC and the given date
//        |       └─ create a new Date from the [date], so the original date is not modified          
//        └─ the number value from setDate should be reconverted to a real Date
}

【讨论】:

  • 谢谢,它有效,但我需要使用函数而不是 const ,否则这是一个很好的解决方案
  • 一个(n箭头)函数(表达式),但是嘿,现在它是一个function declaration
猜你喜欢
  • 1970-01-01
  • 2015-08-27
  • 2022-11-20
  • 2014-01-28
  • 2021-04-20
  • 2023-03-29
  • 1970-01-01
  • 2020-11-18
  • 2016-05-25
相关资源
最近更新 更多