首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Javascript中查找介于两个日期之间的周日

在Javascript中查找介于两个日期之间的周日
EN

Stack Overflow用户
提问于 2018-06-18 01:41:42
回答 5查看 231关注 0票数 0

在美国,基督教的主显节在1月2日至1月8日(包括1月8日)之间的星期天举行。我在试着用Javascript找出它的日期。它看起来应该可以工作,但我什么也得不到:

代码语言:javascript
复制
var startDate = new Date(2018,0,2);
var endDate = new Date(2018,0,8);
var epiphanyUS = new Date();

while (startDate < endDate){
  if (startdate.getDay() === 0){
    epiphanyUS = startdate;
  }
  startDate.setDate(startDate.getDate() + 1);
}
console.log("Epiphany is" + epiphanyUS.format("MM-DD-YYYY"));

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2018-06-18 01:56:11

我修复了几个拼写错误,并显式地定义了所有变量。我认为您的while循环逻辑也可以更清晰。我不知道您是否在使用外部JS库(moment?),但.format不是我熟悉的方法。最后,我添加了一个年份变量,这样您就可以快速修改它,以便在任何其他年份找到顿悟。

代码语言:javascript
复制
var year = 2018;
var startDate = new Date(year,0,2);
var endDate = new Date(year,0,8);
var epiphanyUS;

while (startDate <= endDate) {
    if (startDate.getDay() === 0) {
        epiphanyUS = startDate;
        break;
    } else {
        startDate.setDate(startDate.getDate() + 1);
    }
}

console.log("Epiphany is " + epiphanyUS.toDateString());

票数 2
EN

Stack Overflow用户

发布于 2018-06-18 02:01:50

如果您更喜欢使用返回语句,也可以将逻辑包装在函数中。

代码语言:javascript
复制
var startDate = new Date(2018,0,2);
var endDate = new Date(2018,0,8);

function getEpiphanyUS (startDate, endDate) {

  while (startDate <= endDate) {
    if (startDate.getDay() === 0){
      return startDate
    }
    startDate.setDate(startDate.getDate() + 1);
  }

}

var epiphanyUS = getEpiphanyUS (startDate, endDate)
console.log("Epiphany is " + epiphanyUS.toDateString());

票数 2
EN

Stack Overflow用户

发布于 2018-06-18 01:55:54

找到匹配项时,应使用break。它会让你走出这个循环。

代码语言:javascript
复制
var startDate = new Date(2018,0,2);
var endDate = new Date(2018,0,8); 
var epiphanyUS; // you should also define the variable you intend to use later.
    
while (startDate <= endDate){ // inclusive of endDate
  if (startDate.getDay() === 0){
    epiphanyUS = startDate; // fix the typo. It's startDate, not startdate
    break; // break when match is found.
  }
  startDate.setDate(startDate.getDate() + 1);
}
// check for presence and do stuff accordingly, like console.log
if(epiphanyUS) console.log("Epiphany is " + epiphanyUS);

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50899047

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档