Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在JavaScript中找到任意给定工作日的顺序位置_Javascript_Date - Fatal编程技术网

如何在JavaScript中找到任意给定工作日的顺序位置

如何在JavaScript中找到任意给定工作日的顺序位置,javascript,date,Javascript,Date,我试图在恒定时间内找到工作日的实际位置。我用loop找到它,但试图用一些数学来找出它。我知道这就像是把它除以7,但却不能让它工作 这是代码 for(var ind=0; ind<=between.length; ind++){ if (new Date(between[ind]).getMonthWeek() === baseDtWk && new Date(between[ind]).getDay() === baseDtD) { datesToBeM

我试图在恒定时间内找到工作日的实际位置。我用loop找到它,但试图用一些数学来找出它。我知道这就像是把它除以7,但却不能让它工作

这是代码

for(var ind=0; ind<=between.length; ind++){
   if (new Date(between[ind]).getMonthWeek() === baseDtWk && new Date(between[ind]).getDay() === baseDtD) {
       datesToBeMarked.push(between[ind]);
       console.log(" :Date: " + between[ind] + " :Week: " + new Date(between[ind]).getMonthWeek());
       console.log("Date entered : " + new Date(between[ind]));
   }

}

for(var ind=0;ind这几天我已经完成了。它和下面的代码一样简单。:)

Number.prototype.nth=function(){
var n=Math.round(this),t=Math.abs(n%100),i=t%10;

如果(i你还没有展示你想要结果的样子,我猜你想知道某个特定日期是否是,比如说,第n个星期二,例如

// Add ordinal to a number
function addOrdinal(n) {
    var ord = [,'st','nd','rd'];
    var a = n % 100;
    return n + (ord[a>20? a%10 : a] || 'th');
}

// Return the ordinal number of a day in the month
function ordinalDay(d) {
  d = d || new Date();
  var days = ['Sunday','Monday','Tuesday','Wednesday',
              'Thursday', 'Friday','Saturday'];
  return addOrdinal(Math.ceil(d.getDate()/7)) + ' ' + days[d.getDay()];
}

console.log(ordinalDay(new Date(2015,0,1)));   // 1st Thursday
console.log(ordinalDay(new Date(2015,0,27)));  // 4th Tuesday
console.log(ordinalDay(new Date(2015,0,31)));  // 5th Saturday
console.log(ordinalDay(new Date(2015,11,25))); // 4th Friday

一个工作日的顺序位置是什么?你的意思是Sun=0,Mon=1,等等?请显示你尝试过的代码。@Barmar
for(var ind=0;indI仍然不理解这个问题。您的循环在
中间
数组中的不同日期运行,它并不能确定任何东西的位置。@Barmar最初我获取范围,然后将该范围推到中间数组中。神奇的是在
中找到基准日期的
,以及
>baseDtD
。现在,通过迭代数组的每个元素。我检查此日期是否与此数组中的第一个日期具有相同的星期和日期。然后选择它。它在快乐场景中工作正常。唯一的问题是,工作日不在给定的星期,而是在下一个星期。如果找不到,如何到达工作日的下一个发生点在指定的一周内?
(Math.ceil((今天)/7)).nth()
Math.ceil(今天/7).nth()
更容易阅读。仅为格式化输出字符串而构建数组的效率非常低。如果我重新措辞以解释我的原始问题,那么我可以说
介于[]
是一个数组,其中包含用户给定范围内的所有日期。在此数组中,第一个元素是我查找同一工作日的基础。例如,如果我没有在第一个元素所在的同一周内找到该工作日,则会出现问题。我如何在数组中找到它,即该工作日的第一次出现?e、 3月3日是第一周的星期二。但是4月的第一周没有星期二。4月的第二周有一个日期为7的星期二。如何到达那里?因此,根据范围内的第一个日期,您需要每个月相应的第n个星期天?例如,如果第一个日期是该月的第2个星期一,则获取第二个Mo范围内每个月的nday?是的,基于数组的第一个元素。同一周中的同一个工作日。如果是第一个,则为第一个。如果是第三个,则为第三个。如果是第一个,但在下一个月,则为第一个星期中没有工作日,则为该工作日的第一次出现。如果是第n个月的最后一周,则为第n个月的最后一周上个星期没有,上个星期第二个星期也没有。我对这个问题很生气。:(有什么办法可以帮我解决问题吗?
// Add ordinal to a number
function addOrdinal(n) {
    var ord = [,'st','nd','rd'];
    var a = n % 100;
    return n + (ord[a>20? a%10 : a] || 'th');
}

// Return the ordinal number of a day in the month
function ordinalDay(d) {
  d = d || new Date();
  var days = ['Sunday','Monday','Tuesday','Wednesday',
              'Thursday', 'Friday','Saturday'];
  return addOrdinal(Math.ceil(d.getDate()/7)) + ' ' + days[d.getDay()];
}

console.log(ordinalDay(new Date(2015,0,1)));   // 1st Thursday
console.log(ordinalDay(new Date(2015,0,27)));  // 4th Tuesday
console.log(ordinalDay(new Date(2015,0,31)));  // 5th Saturday
console.log(ordinalDay(new Date(2015,11,25))); // 4th Friday