求助:计算星期几是几号的函数

adamlee_1984 2007-05-06 02:04:06
因为项目中加入日历的缘故,要在日程安排的时候加入,选择每周1,2,3等定时提醒,现在需要在用户选择周一时,能计算出所在年的所有客户选择的星期几对应的日期,比如客户选择每周一提醒,则能够计算出2007年所有星期一的日期.
多谢各位大虾,我会给分
...全文
312 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
收藏
yixianggao 2007-05-07
  • 打赏
  • 举报
回复
To superdullwolf(超级大笨狼,每天要自强,MVP)

乍一看,还以为是 VB,仔细一瞧才知道是 SQL,兄弟真牛!

原来 JS 板块里还可以这么写,了解了解!
超级大笨狼 2007-05-07
  • 打赏
  • 举报
回复
set nocount on
declare @d datetime
declare @T table(Monday datetime )
set @d=convert(datetime,'2007-1-1')
while @d<convert(datetime,'2008-1-1')
begin
insert @T select @d where datename(weekday,@d) ='星期一'
set @d=convert(datetime,dateadd(d,1,@d))
end
select * from @T


2007-01-01 00:00:00.000
2007-01-08 00:00:00.000
2007-01-15 00:00:00.000
2007-01-22 00:00:00.000
2007-01-29 00:00:00.000
2007-02-05 00:00:00.000
2007-02-12 00:00:00.000
2007-02-19 00:00:00.000
2007-02-26 00:00:00.000
2007-03-05 00:00:00.000
2007-03-12 00:00:00.000
2007-03-19 00:00:00.000
2007-03-26 00:00:00.000
2007-04-02 00:00:00.000
2007-04-09 00:00:00.000
2007-04-16 00:00:00.000
2007-04-23 00:00:00.000
2007-04-30 00:00:00.000
2007-05-07 00:00:00.000
2007-05-14 00:00:00.000
2007-05-21 00:00:00.000
2007-05-28 00:00:00.000
2007-06-04 00:00:00.000
2007-06-11 00:00:00.000
2007-06-18 00:00:00.000
2007-06-25 00:00:00.000
2007-07-02 00:00:00.000
2007-07-09 00:00:00.000
2007-07-16 00:00:00.000
2007-07-23 00:00:00.000
2007-07-30 00:00:00.000
2007-08-06 00:00:00.000
2007-08-13 00:00:00.000
2007-08-20 00:00:00.000
2007-08-27 00:00:00.000
2007-09-03 00:00:00.000
2007-09-10 00:00:00.000
2007-09-17 00:00:00.000
2007-09-24 00:00:00.000
2007-10-01 00:00:00.000
2007-10-08 00:00:00.000
2007-10-15 00:00:00.000
2007-10-22 00:00:00.000
2007-10-29 00:00:00.000
2007-11-05 00:00:00.000
2007-11-12 00:00:00.000
2007-11-19 00:00:00.000
2007-11-26 00:00:00.000
2007-12-03 00:00:00.000
2007-12-10 00:00:00.000
2007-12-17 00:00:00.000
2007-12-24 00:00:00.000
2007-12-31 00:00:00.000

yixianggao 2007-05-06
  • 打赏
  • 举报
回复
LZ 五一长假还不忘工作,佩服佩服!

写了一小段,LZ 看看行不,不行就自己动手改改,L@_@K!

<body>
<input type="text" id="txtYear" value="2007" />
<select id="selDays">
<option value="-1" selected>-- 请选择 --</option>
<option value="0">星期天</option>
<option value="1">星期一</option>
<option value="2">星期二</option>
<option value="3">星期三</option>
<option value="4">星期四</option>
<option value="5">星期五</option>
<option value="6">星期六</option>
</select>
<input type="button" id="btnCalculate" value="计算" />
<div id="divResult"></div>
<script type="text/javascript">
<!--
var oYear = document.getElementById("txtYear");
var oDays = document.getElementById("selDays");
var oCalculate = document.getElementById("btnCalculate");
var oResult = document.getElementById("divResult");

Date.prototype.getY4M2D2 = function()
{
var strDelimiter = "-";
var numMonth = this.getMonth()+1;
var numDate = this.getDate();
var strY4M2D2 = this.getFullYear() + strDelimiter;
strY4M2D2 += (numMonth<10 ? ("0"+numMonth) : numMonth) + strDelimiter;
strY4M2D2 += numDate<10 ? ("0"+numDate) : numDate;
return strY4M2D2;
};

oCalculate.onclick = function()
{
var numYear = parseInt(oYear.value);
var numDay = parseInt(oDays.value);
if (numDay != -1)
{
// 月份,是从 0 到 11 之间的整数(1 月至 12 月)。
var datFirstDate = new Date(numYear, 0, 1);
var numFirstDay = datFirstDate.getDay();

var numInterval = numDay - numFirstDay;
if (numInterval < 0) numInterval += 7;

var numMillionsecondsPerDate = 1000*3600*24;
var datValidatedDay = new Date(datFirstDate.valueOf() + numMillionsecondsPerDate*numInterval);

var arrValidatedDays = new Array();
do
{
arrValidatedDays.push(datValidatedDay.getY4M2D2());
datValidatedDay = new Date(datValidatedDay.valueOf() + numMillionsecondsPerDate*7);
}
while (datValidatedDay.getFullYear() == numYear);

oResult.innerHTML = "共计 " + arrValidatedDays.length + " 天,详细列表如下:<br />";
oResult.innerHTML += arrValidatedDays.join("<br />");
}
else
{
alert("搞什么搞?快选!");
}
};
//-->
</script>
</body>

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧