自动判断是在哪周怎么做?

jackrong427 2004-06-18 01:27:55
学校每学期都有一个日期设定,比方说9月1号开学,明年1月30号放寒假,在我设定这个时间范围后,系统能自动算出这学期一共多少周,然后写到表里,当我登陆的时候能提示当前是第几周,如何实现???急!
...全文
169 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
超级大笨狼 2004-06-20
  • 打赏
  • 举报
回复
把所有msgbox,document.write换成response.write
超级大笨狼 2004-06-20
  • 打赏
  • 举报
回复
服务器端代码
不能用msgbox输出,变量可以同样得到。
aspczlover 2004-06-18
  • 打赏
  • 举报
回复
我上面写的是服务器端代码<%...%>
如果在脚本里 可以这样取
<script language=vbscript>

weeksum="<%=weeksum%>"
weekindex="<%=weekindex%>"

if 提示第几周 then
msgbox weekindex
elseif 提示总周数
msgbox weeksum
end if
</script>
超级大笨狼 2004-06-18
  • 打赏
  • 举报
回复
上学年22周下学年22周
现在是:上学期第16周
aspczlover 2004-06-18
  • 打赏
  • 举报
回复
存取数据你应该没问题吧
'总周数写到表里:
set rs=server.CreateObject("adodb.recordset")
set rs.ActiveConnection=conn
sql="select datediff(ww,'2003-09-01','2004-01-30') as a"
rs.Open sql,,1,1
weeksum=rs("a")
conn.execute "insert into 表(字段) values('"&weeksum&"')"
rs.close
'读出当前是第几周:
sql="select datediff(ww,'2003-09-01',getdate()) as b"
rs.Open sql,,1,1
weekindex=rs("b")
response.write weekindex
rs.close

jackrong427 2004-06-18
  • 打赏
  • 举报
回复
我的想法是管理员在后台设置每学期的时间,可是用asp读出来的变量怎么在vbscript里调用呢?
aspczlover 2004-06-18
  • 打赏
  • 举报
回复
select datediff(ww,'2003-09-01','2004-01-30') '总周数
select datediff(wk,'2003-09-01',getdate()) '当前是第几周
超级大笨狼 2004-06-18
  • 打赏
  • 举报
回复

<SCRIPT LANGUAGE=vbscript >

dim d1,d2,d3,d4,w1,w2,season
'某年上学年起止日期
d1= cdate(year(Date) & "-3-1")
d2= cdate(year(Date) & "-7-30")
w1= -1 * int((d1-d2)/7)
'某年下学年起止日期
d3= cdate(year(Date) & "-9-1")
d4= cdate((year(Date)+1) & "-1-30")
w2=-1 * int((d3-d4)/7 )
'要考虑你登陆的 时间是哪一学年,如果1月20号登陆其实还是上一学年,所以情况特殊
document.write "上学年" & w1 & "周下学年" & w2 & "周<br/>现在是:"
season ="假期"
if d1<date and date<d2 then
season ="上学期第" & (-1 * int((d1-Date)/7)) & "周"

end if
if d3<date and date<d4 then
season ="下学期第" & (-1 * int((d1-Date)/7)) & "周"
end if
document.write season
</SCRIPT>
TSD 2004-06-18
  • 打赏
  • 举报
回复
这个学期有131天,共19周,现在是第3周
TSD 2004-06-18
  • 打赏
  • 举报
回复
试试这个函数吧

'参数说明:
'dstart 开始日期
'dend 结束日期
'ndate 当前日期

function SDweek(dstart,dend,ndate)
dim dweek,nweek

if datediff("d",dstart,dend) mod 7=0 then
dweek=datediff("d",dstart,dend)/7
elseif datediff("d",dstart,dend)=8 then
dweek=int(datediff("d",dstart,dend)/7)+1
else
dweek=int(datediff("d",dstart,dend)/7)+1
end if

if int(datediff("d",dstart,ndate))<7 then
nweek="1"
elseif int(datediff("d",dstart,ndate))=7 then
nweek="2"
elseif int(datediff("d",dstart,ndate))>7 then
nweek=int(datediff("d",dstart,ndate)/7)+1
end if

SDweek="这个学期有" & datediff("d",dstart,dend) & "天,共" & dweek & "周,现在是第" & nweek & "周"
end function

x=SDweek(#2004-9-1#,#2005-1-10#,#2004-9-15#)
response.write x
yown 2004-06-18
  • 打赏
  • 举报
回复
使用datadiff()函数,具体使用方法,查联机帮助,有详解
龙华 2004-06-18
  • 打赏
  • 举报
回复
回楼上和楼上楼上,他调用的是sql server查询。
yyne 2004-06-18
  • 打赏
  • 举报
回复
asp vbscript的datediff函数参数是 ww 而不是 week 啦~~
龙华 2004-06-18
  • 打赏
  • 举报
回复
skyboy0720(飞) 方法不错。
king2003 2004-06-18
  • 打赏
  • 举报
回复
看这个不就知道了

DateDiff 函数 语言参考
版本 2


请参阅


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

描述
返回两个日期之间的时间间隔。
语法
DateDiff(interval, date1, date2 [,firstdayofweek[, firstweekofyear]])
DateDiff 函数的语法有以下参数:

参数 描述
interval 必选。String expression 表示用于计算 date1 和 date2 之间的时间间隔。有关数值,请参阅“设置”部分。
date1, date2 必选。日期表达式。用于计算的两个日期。
firstdayofweek 可选。指定星期中第一天的常数。如果没有指定,则默认为星期日。有关数值,请参阅“设置”部分。
firstweekofyear 可选。指定一年中第一周的常数。如果没有指定,则默认为 1 月 1 日所在的星期。有关数值,请参阅“设置”部分。



设置
interval 参数可以有以下值:
设置 描述
yyyy 年
q 季度
n 月
y 一年的日数
d 日
w 一周的日数
ww 周
h 小时
m 分钟
s 秒


firstdayofweek 参数可以有以下值:

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


firstweekofyear 参数可以有以下值:

常数 值 描述
vbUseSystem 0 使用区域语言支持 (NLS) API 设置。
vbFirstJan1 1 由 1 月 1 日所在的星期开始(默认)。
vbFirstFourDays 2 由在新年中至少有四天的第一周开始。
vbFirstFullWeek 3 由在新的一年中第一个完整的周开始。


说明
DateDiff 函数用于判断在两个日期之间存在的指定时间间隔的数目。例如可以使用 DateDiff 计算两个日期相差的天数,或者当天到当年最后一天之间的星期数。
要计算 date1 和 date2 相差的天数,可以使用“一年的日数”(“y”)或“日”(“d”)。当 interval 为“一周的日数”(“w”)时,DateDiff 返回两个日期之间的星期数。如果 date1 是星期一,则 DateDiff 计算到 date2 之前星期一的数目。此结果包含 date2 而不包含 date1。如果 interval 是“周”(“ww”),则 DateDiff 函数返回日历表中两个日期之间的星期数。函数计算 date1 和 date2 之间星期日的数目。如果 date2 是星期日,DateDiff 将计算 date2,但即使 date1 是星期日,也不会计算 date1。

如果 date1 晚于 date2,则 DateDiff 函数返回负数。

firstdayofweek 参数会对使用“w”和“ww”间隔符号的计算产生影响。

如果 date1 或 date2 是日期文字,则指定的年度会成为日期的固定部分。但是如果 date1 或 date2 被包括在引号 (" ") 中并且省略年份,则在代码中每次计算 date1 或 date2 表达式时,将插入当前年份。这样就可以编写适用于不同年份的程序代码。

在 interval 为“年”(“yyyy”)时,比较 12 月 31 日和来年的 1 月 1 日,虽然实际上只相差一天,DateDiff 返回 1 表示相差一个年份。

下面的示例利用 DateDiff 函数显示今天与给定日期之间间隔天数:

Function DiffADate(theDate)
DiffADate = "从当天开始的天数:" & DateDiff("d", Now, theDate)
End Function

ecobin 2004-06-18
  • 打赏
  • 举报
回复
好象是 ww 而不是week吧
ecobin 2004-06-18
  • 打赏
  • 举报
回复
关注!!!
moonyli 2004-06-18
  • 打赏
  • 举报
回复
datediff好象没有week这样写法吧
要周也是Ww
skyboy0720 2004-06-18
  • 打赏
  • 举报
回复
知道怎么做了吧!
skyboy0720 2004-06-18
  • 打赏
  • 举报
回复
select datediff(week,'2003-09-01','2004-01-30') '总过有多少周
select datediff(week,'2003-09-01','2003-10-01') '第几周
加载更多回复(1)

28,390

社区成员

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

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