计算某天是当月第几周

在网上看到这样文章,是用VBS写的,觉得有些麻烦,于是想自己写一个,才发现VBS本来就有类似的函数,于是很容易得实现了

1
2
3
4
5
Function weekOfMonth(myDate)
monthWeek = DatePart("ww",DateAdd("d",-day(myDate)+1,myDate)) '取得该月1号是本年第几周
dayWeek = DatePart("ww",myDate) '取得该日期是本年第几周
weekOfMonth = dayWeek - monthWeek + 1
End Function

返回是整数,可以这样调用:

1
MsgBox weekOfMonth("2006-8-20")

写完觉得太简单了,再用Flash写一个,在Flash里面找不到关于周计算的函数,只能自己写算法了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function weekOfMonth(yyyy:Number,mm:Number,dd:Number):Number{
var myDate = new Date (yyyy, mm-1, dd);
var diff = myDate.getDate() - 1;
myDate.setDate(1);
var dateWeek = 6 - myDate.getDay ();
if (diff > dateWeek){
diff -= dateWeek;
var dateMod = diff % 7;
if(dateMod > 0){
return (diff - dateMod)/7 + 2;
}else{
return diff/7 + 1;
}
}else{
return 1;
}
}

也是返回整型,调用方法

1
trace(weekOfMonth(2006,8,20));

函数也很简单,就不多说了。下面是Flash演示
这里下载源文件(133KB),Flash8


前面说到的文章在这里,有兴趣可以看看