Date 使用Coldfusion获得本月的每个星期二

Date 使用Coldfusion获得本月的每个星期二,date,coldfusion,Date,Coldfusion,我目前正在使用jquery FullCalendar插件创建一个特定的日历 我必须解决的任务之一是如何获得一个月中任何特定的一天 我目前正在服务器端使用Coldfusion 10,所以我想知道是否有任何特定的方法可以将星期二的每个实例都放入一个日期数组中 理想情况下,我希望在服务器端执行此操作,并填充日历插件 我的问题主要是试图寻找一个日历月中每一天的来源 非常感谢您的建议。CFLlib上的UDF允许您查找给定月份中给定一周中的第一天。从那时起,您只需从该日期开始循环添加7每个迭代,直到该月份不

我目前正在使用jquery FullCalendar插件创建一个特定的日历

我必须解决的任务之一是如何获得一个月中任何特定的一天

我目前正在服务器端使用Coldfusion 10,所以我想知道是否有任何特定的方法可以将星期二的每个实例都放入一个日期数组中

理想情况下,我希望在服务器端执行此操作,并填充日历插件

我的问题主要是试图寻找一个日历月中每一天的来源

非常感谢您的建议。

CFLlib上的UDF允许您查找给定月份中给定一周中的第一天。从那时起,您只需从该日期开始循环添加
7
每个迭代,直到该月份不再是所选月份

theMonth = month(now());
startDate = firstXDayOfMonth(3, theMonth, year(now()));
tuesdays = [];
for (date=startDate; month(date) == theMonth; date +=7){
    arrayAppend(tuesdays, dateAdd("s",0, date)); // this just converts date from a number back to a date
}
writeDump(tuesdays);
更新: 实际上,在CFLib上实现UDF的方法非常糟糕。改用此变体:

function firstXDayOfMonth(dayOfWeek,month,year){
    var firstOfMonth    = createDate(year, month,1);
    var dowOfFirst      = dayOfWeek(firstOfMonth);
    var daysToAdd       = (7 - (dowOfFirst - dayOfWeek)) MOD 7;
    var dow = dateAdd("d", daysToAdd, firstOfMonth);
    return dow;
}
稍后我将在cflib上更新UDF:我需要先为它编写一些像样的单元测试,现在有点忙。

简短版本: 此时,CF中没有一个函数可以获取所有的星期二。但这里有一个简单的方法:

// assuming a year and month are defined already
var firstDayOfMonth = createDate( year, month, 1 );
var targetDayOfWeek = 3; // Tuesday is 3 if Sunday is 1
var dayOfWeekArray = []; // This is the outcome.

// loop through each day of the month adding the target days to the array.
for( i = 1; i LTE daysInMonth( firstDayOfMonth ); i++){
  var loopingDate = createDate( year, month, i );
  if( dayOfWeek( loopingDate ) == targetDayOfWeek ){
    ArrayAppend( dayOfWeekArray, loopingDate );
  }
}
dayOfWeekArray
是一个月中每个星期二的数组


更多详情: 你的标题和帖子似乎有冲突,因为你在寻找什么,所以我会坚持标题,因为这就是我来这里的原因

以下是您可以在一个月内找到所有周二的方法:

  • 创建日期对象
  • 使用date对象遍历目标月份中的天
  • 如果当前日期是星期二,则将其添加到数组中
  • 砰,你一个月的所有星期二都排成一列
以下是我使用的代码(cfscript):

这将为您提供一个特定月份的每个星期二的日期。例如,本月(2019年1月)将是
[1,8,15,22,29]
。如果您愿意,可以将其更改为整个日期对象-这就是我在顶部的简短版本中所做的

// assuming a year and month are defined already
var firstDayOfMonth = createDate( year, month, 1 );
var dayOfWeekArray = [];
var targetDayOfWeek = 3; // Tuesday is 3 if Sunday is 1. Do a quick writeDump in the loop if you're not sure.

for( i = 1; i LTE daysInMonth( firstDayOfMonth ); i++){
  var loopingDate = createDate( year, month, i );
  if( dayOfWeek( loopingDate ) == targetDayOfWeek ){
    ArrayAppend( dayOfWeekArray, datePart( "d", loopingDate );
    // ArrayAppend( dayOfWeekArray, loopingDate ); - use this if you'd rather have the whole date object
  }
}