小算法:如何判断当前日期是第几周?

yweihua 2003-11-13 11:36:51
如题,有下列条件:
按星期1到星期日为一周,
每月1号若正好为星期一,则2号为本月第一周;
若每月1号不为星期一,换句话说不在本月一个完整的周内,则归到上个月最后一周。
要求把当前日期的月份和周数显示出来!!!
万分感谢,来者有分!!!
...全文
1055 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
xinxian1366 2003-11-13
  • 打赏
  • 举报
回复
用vbscript中的DatePart()函数

myDate="2003-11-13"
myMonth = month(mydate) '所需月份值
monthFirst = year(mydate) & "-" & month(mydate) & "-1"
Week1 = DatePart("ww",mydate,vbMonday)
Week2 = DatePart("ww",monthFirst ,vbMonday)
myweek = week1-week2
if Weekday(monthFirst,vbMonday)>1 then
myweek = myweek +1
end if
超级大笨狼 2003-11-13
  • 打赏
  • 举报
回复
Visual Basic Scripting Edition

Weekday 函数
请参阅
Date 函数 | Day 函数 | Month 函数 | Now 函数 | Year 函数
要求
版本 1
返回代表一星期中某天的整数。

Weekday(date, [firstdayofweek])
参数
date
可以代表日期的任意表达式。如果 date 参数中包含 Null,则返回 Null。
Firstdayofweek
指定星期中第一天的常数。如果省略,默认使用 vbSunday。
设置
firstdayofweek 参数有如下设置:

常数 值 描述
vbUseSystemDayOfWeek 0 使用区域语言支持 (NLS) API 设置。
vbSunday 1 星期日
vbMonday 2 星期一
vbTuesday 3 星期二
vbWednesday 4 星期三
vbThursday 5 星期四
vbFriday 6 星期五
vbSaturday 7 星期六

返回值
Weekday 函数返回如下值:

常数 值 描述
vbSundayDayOfWeek 1 星期日
vbMonday 2 星期一
vbTuesday 3 星期二
vbWednesday 4 星期三
vbThursday 5 星期四
vbFriday 6 星期五
vbSaturday 7 星期六

说明
下面例子利用 Weekday 函数得到指定日期为星期几:

Dim MyDate, MyWeekDay
MyDate = #October 19, 1962# ' 分派日期。
MyWeekDay = Weekday(MyDate) ' 由于 MyWeekDay 包含 6,MyDate 代表星期五。
要求
版本 1

请参阅
Date 函数 | Day 函数 | Month 函数 | Now 函数 | Year 函数



--------------------------------------------------------------------------------

© 2001 Microsoft Corporation. 保留所有权利。

超级大笨狼 2003-11-13
  • 打赏
  • 举报
回复
Visual Basic Scripting Edition

Month 函数
请参阅
Date 函数 | Day 函数 | Now 函数 | Weekday 函数 | Year 函数
要求
版本 1
返回 1 到 12 之间的一个整数(包括 1 和 12),代表一年中的某月。

Month(date)
date 参数是任意可以代表日期的表达式。如果 date 参数中包含 Null,则返回 Null。

说明
下面的示例利用 Month 函数返回当前月:

Dim MyVar
MyVar = Month(Now) ' MyVar 包含
' 与当前月对应的数字。
要求
版本 1

请参阅
Date 函数 | Day 函数 | Now 函数 | Weekday 函数 | Year 函数



--------------------------------------------------------------------------------

© 2001 Microsoft Corporation. 保留所有权利。

leiaming 2003-11-13
  • 打赏
  • 举报
回复
用weekdays()
希默软件 2003-11-13
  • 打赏
  • 举报
回复
http://expert.csdn.net/Expert/topic/2374/2374455.xml?temp=.9284632
yweihua 2003-11-13
  • 打赏
  • 举报
回复
to xinxian1366() :
非常感谢,您真是太伟大了,向你学习!
我费了半天劲儿,在你的基础上也做出来了。
但比较麻烦。
<%
myDate=date()
myMonth = month(mydate) '所需月份值
monthFirst = year(mydate) & "-" & month(mydate) & "-1"'本月1日日期
Week1 = DatePart("ww",mydate,vbMonday)'今天是一年的第一周
Week2 = DatePart("ww",monthFirst ,vbMonday)'本月1日是一年的第几周
myweek = week1-week2+1
'如果本月1日是周一,则直接显示为上周最后一周,但算出的周就是正确的周
'否则,周数要减1显示本周的上一周
if Weekday(monthFirst,vbMonday)>1 then
myweek=myweek-1 '显示本周的上一周
else
myweek=myweek
end if
if myweek=0 and Weekday(monthFirst,vbMonday)>1 then '应是上月的最后一周
'计算上月月数
if month(mydate)=1 then
lastmonth=12
else
lastmonth=month(mydate)-1
end if
lastmonthFirst= year(mydate) & "-" & lastmonth & "-1" '上月1日日期
Week3 = DatePart("ww",lastmonthFirst ,vbMonday) '上月1日是一年的第几周
'取得上个月的天数
lasttotaldays=DateDiff("d",lastmonthfirst,monthfirst)
'取得上个月最后一天的日期
lastmonthlastday= year(mydate) & "-" & lastmonth & "-" & lasttotaldays
response.write "上月最后一天日期为"&lastmonthlastday&"<br>"
Week4= DatePart("ww",lastmonthlastday ,vbMonday) '上月最后1天是一年第几周
response.write "上月最后一天为一年中第"&cstr(week4)&"周<br>"
myweek = week4-week3+1
if Weekday(lastmonthFirst,vbMonday)<>1 then myweek=myweek-1 '显示本月的上一周
mymonth=lastmonth
end if
response.Write "第"&cstr(myweek)&"周<br>"
response.Write "第"&cstr(mymonth)&"月<br>"
%>
xinxian1366 2003-11-13
  • 打赏
  • 举报
回复
阿,不好意思
应该把刚才的代码写成函数调用才对,现在有点笨重
xinxian1366 2003-11-13
  • 打赏
  • 举报
回复
刚才发的代码再加一点就可以了

myDate="2003-11-3"

myMonth = month(mydate) '所需月份值
monthFirst = year(mydate) & "-" & month(mydate) & "-1"
Week1 = DatePart("ww",mydate,vbMonday)
Week2 = DatePart("ww",monthFirst ,vbMonday)
myweek = week1-week2
if Weekday(monthFirst,vbMonday)=1 then
myweek = myweek+1
end if

if myweek=0 then
myDate = DateAdd("d",-1,monthFirst)
myMonth = month(mydate) '所需月份值
monthFirst = year(mydate) & "-" & month(mydate) & "-1"
Week1 = DatePart("ww",mydate,vbMonday)
Week2 = DatePart("ww",monthFirst ,vbMonday)
myweek = week1-week2
if Weekday(monthFirst,vbMonday)=1 then
myweek = myweek+1
end if
end if

response.write myMonth'所需月份
response.write myweek'所需星期

yweihua 2003-11-13
  • 打赏
  • 举报
回复
感谢各位,
但上面的解答没针对具体的要求,
注意:如果本月1日不是星期一,则本月一日所在的周归到上个月最后一周,但你要显示出它是第几个月的第几周,具体来说:
假如今天是2003年11月2日,那么就应该显示2003年10月第四周,
而如果今天是2003年11月3日,那么就应该显示是2003年11月第一周!
Struggling 2003-11-13
  • 打赏
  • 举报
回复
<SCRIPT LANGUAGE="JavaScript">
Date.prototype.getWeek = function() {
execScript("w=datepart('ww',now)","vbscript");
return(w);
}
alert("第" + new Date().getWeek() + "周");
</SCRIPT>
007james 2003-11-13
  • 打赏
  • 举报
回复
Weekday(date, [firstdayofweek])
参数
date
可以代表日期的任意表达式。如果 date 参数中包含 Null,则返回 Null。
Firstdayofweek
指定星期中第一天的常数。如果省略,默认使用 vbSunday。
设置
firstdayofweek 参数有如下设置:

常数 值 描述
vbUseSystemDayOfWeek 0 使用区域语言支持 (NLS) API 设置。
vbSunday 1 星期日
vbMonday 2 星期一
vbTuesday 3 星期二
vbWednesday 4 星期三
vbThursday 5 星期四
vbFriday 6 星期五
vbSaturday 7 星期六

返回值
Weekday 函数返回如下值:

常数 值 描述
vbSundayDayOfWeek 1 星期日
vbMonday 2 星期一
vbTuesday 3 星期二
vbWednesday 4 星期三
vbThursday 5 星期四
vbFriday 6 星期五
vbSaturday 7 星期六

说明
下面例子利用 Weekday 函数得到指定日期为星期几:

Dim MyDate, MyWeekDay
myDate="2003-11-13" ' 分派日期。
MyWeekDay = Weekday(myDate,1) ' 指定星期1一周的开始。

28,402

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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