如何循环一年中剩余的几天,并在javascript中查找特定的日期?

如何循环一年中剩余的几天,并在javascript中查找特定的日期?,javascript,Javascript,我有三个人的生日: 史蒂夫->5月3日 马克->10月20日 罗宾->12月5日 如何循环一年中剩下的几天,找出哪一个人的生日还没到(在本例中,输出MARK和ROBBIN) 我已经能够获得一年中的重拍日,但我不知道如何循环一年中的重拍日 并输出这些人的姓名(在接下来的几个月内将有Bithday)。 这就是我到目前为止所做的: 我创建了一个函数来获得重新制作的日子: function remainingDays(date1, date2) { // The number of millisecon

我有三个人的生日:

史蒂夫->5月3日

马克->10月20日

罗宾->12月5日

如何循环一年中剩下的几天,找出哪一个人的生日还没到(在本例中,输出MARK和ROBBIN)

我已经能够获得一年中的重拍日,但我不知道如何循环一年中的重拍日 并输出这些人的姓名(在接下来的几个月内将有Bithday)。 这就是我到目前为止所做的:

我创建了一个函数来获得重新制作的日子:

function remainingDays(date1, date2) {
// The number of milliseconds in one day
var ONE_DAY = 1000 * 60 * 60 * 24

var date1_ms = date1.getTime()
var date2_ms = date2.getTime()

var difference_ms = Math.abs(date1_ms - date2_ms)

// Convert back to days and return
return Math.round(difference_ms/ONE_DAY)
}
如您所见,该函数返回剩余天数。以下是价值观:

var current_date = new Date()

// Store the date of the next New Year's Day
var new_years_date = new Date()
new_years_date.setYear(new_years_date.getFullYear() + 1)
new_years_date.setMonth(0)
new_years_date.setDate(1)

// Call the remainingDays function
var days_left = remainingDays(current_date, new_years_date);

if (days_left > 1) {
document.write(days_left + " days left this year")
} else {
 document.write(days_left + " day left this year")
 }

请帮帮我…提前谢谢你

您可以为每个人设置一个变量,并检查他的生日是否即将到来

var Mark = new Date(2015, 9, 20);
var now = new Date()

if(Mark > now){
doSomething()
}

像这样的怎么样?(见附件):

如果生日大于今天的日期,它只需将当前生日过滤到一个新数组中,
comming
。没有必要把它复杂化

如果您愿意,可以使其更具语义和可扩展性:

var upcoming = birthdays.filter(afterToday);

function afterToday(person) {
  return new Date(person.date + ' 2015') > new Date();
}
编程的一个关键范例是越简单越好。许多算法可以做同样的事情(最终得到相同的结果),但通常情况下,在其他条件相同的情况下,算法越简单越好

换言之:

  • 该算法可以循环遍历一年中剩余的每个日期,或者

  • 该算法可以简单地检查日期是否大于今天

  • 我认为第二个更简单。此外,代码行更少,可读性更强。

    不要循环

    计算朱利安日期(日期的朱利安日期是一年中某一天的订单号,例如32是2月1日的朱利安日期,请参见)


    然后查看当前朱利安日是否比任何生日朱利安天/P>java和C++标签都要大或更小?请避免添加无关的标签到问题中。根据维基百科的页面,在回答朱利安的日子里是从朱利安时代开始的几天,公元前4713年。这不是从任何一年的1月1日开始的订单号。在金融、信用卡行业,他们使用我在说朱利安日期时给出的定义:)

    var upcoming = birthdays.filter(afterToday);
    
    function afterToday(person) {
      return new Date(person.date + ' 2015') > new Date();
    }