Javascript 在dojox.calendar中选择任何日期时,如何选择一周的第一天和最后一天。?

Javascript 在dojox.calendar中选择任何日期时,如何选择一周的第一天和最后一天。?,javascript,dojo,Javascript,Dojo,我正在使用自定义的dojox.calendar。目前,如果我选择任何日期,我都可以获得该日期。现在,当我们在dojox.calendar中选择任何日期时,如何选择一周的第一天和最后一天?这里有一个小函数,给定一个日期对象和周天数,它返回同一天的前一天(星期日=0,星期一=1,…,星期六=6) 如果日期是星期二,周数是2,它将返回所提供日期的副本。这可用于构建函数,在给定日期的情况下,返回上一个星期日和下一个星期六: // If date is Sunday, return a copy of d

我正在使用自定义的dojox.calendar。目前,如果我选择任何日期,我都可以获得该日期。现在,当我们在dojox.calendar中选择任何日期时,如何选择一周的第一天和最后一天?

这里有一个小函数,给定一个日期对象和周天数,它返回同一天的前一天(星期日=0,星期一=1,…,星期六=6)

如果日期是星期二,周数是2,它将返回所提供日期的副本。这可用于构建函数,在给定日期的情况下,返回上一个星期日和下一个星期六:

// If date is Sunday, return a copy of date (default for getPreviousDay)
// Otherwise, get previous Sunday
function getPreviousSunday(date) {
  var d = getPreviousDay(date, 0);
  return d;
}

// If date is Saturday, return a copy of date
// Otherwise, get previous Saturday and add 7 days
function getNextSaturday(date) {
  if (date.getDay() == 6) {
    return new Date(+date);
  }
  var d = getPreviousDay(date, 6);
  d.setDate(d.getDate() + 7);
  return d;
}

var d = new Date(2013,11,21);

console.log(
  d + '\n' +
  getPreviousSunday(d) + '\n' +
  getNextSaturday(d)
);

/*
   Sat 21-Dec-2013
   Sun 15-Dec-2013
   Sat 21-Dec-2013 
*/
然后可以使用这些值选择日历中的日期范围

我使用
newdate(+Date)
复制日期,因为否则在0到99年,即假定1900到1999年,并将复制搞砸。虽然你不太可能想在这个范围内使用日期(实际上毫无意义),但知道这样做会“起作用”让我感觉更好


IE之所以这样做,是因为如果一个日期对象被传递给日期构造函数,它就会被解析,然后字符串被解析来创建一个日期对象。IE错误地解析自己的字符串0到99年。使用
+
将日期转换为时间值,各地的日期构造函数都会正确处理该值(据我所知)。

一周的第一天是星期天还是星期一?最后一天是星期五、星期六还是星期天?第一天是星期天,最后一天是星期六。。!!好的,那么您是否需要一个函数,在给定日期的情况下,返回星期日00:00:00之前和星期六23:59:59之后的日期?然后可以使用它在Dojox日历中创建一个范围。
// If date is Sunday, return a copy of date (default for getPreviousDay)
// Otherwise, get previous Sunday
function getPreviousSunday(date) {
  var d = getPreviousDay(date, 0);
  return d;
}

// If date is Saturday, return a copy of date
// Otherwise, get previous Saturday and add 7 days
function getNextSaturday(date) {
  if (date.getDay() == 6) {
    return new Date(+date);
  }
  var d = getPreviousDay(date, 6);
  d.setDate(d.getDate() + 7);
  return d;
}

var d = new Date(2013,11,21);

console.log(
  d + '\n' +
  getPreviousSunday(d) + '\n' +
  getNextSaturday(d)
);

/*
   Sat 21-Dec-2013
   Sun 15-Dec-2013
   Sat 21-Dec-2013 
*/