学校有春季学期,秋季学期
每学期开始为第一周
我想知道当天所在周是此学期的第几周?
要知道如秋季学期,从9月1日起到次年的元月20日左右,应该共有22个周左右现在,知道了开学日期(9月1日),如何求出当天所在周是本学期的第几周?这个问题我一直没有好的答案,谁有好的答案?
每学期开始为第一周
我想知道当天所在周是此学期的第几周?
要知道如秋季学期,从9月1日起到次年的元月20日左右,应该共有22个周左右现在,知道了开学日期(9月1日),如何求出当天所在周是本学期的第几周?这个问题我一直没有好的答案,谁有好的答案?
解决方案 »
- delphi tmemo 屏闭鼠标
- 求票据套打源程序
- 在开发GIS时界面显示的地图是用利用其它软件绘制的还是通过调用MAPX的属性来绘制的?
- 关于 CHM 帮助文件的乱码的问题!
- 如何压缩一个文件
- 哪位大侠能给我一个ADO调用存储过程的例子啊?
- 怎样在在网页上对sever数据库中图片字段的写入和取出显示??
- 求delphi Session详解,想通过BDE访问呢paradox数据库的表
- 有谁对西安必特思维公司比较了解,面试技术支持应注意什么?
- 求 Delphi 7+ReportMachine 2.4 的二维码控件(带源码的),谢谢高手!
- 如何随机生成GB2312中特定的某些汉字?
- spComm串口通信问题
function DayOfTheWeek(const AValue: TDateTime): Word; 描述:对于给定的TDateTime类型的日期时间,使用 DayOfTheWeek 函数能得到该日期是该星期的第几天。DayOfTheWeek 函数的返回数值为 1 到 7,其中 1 表示星期一,而 7 表示星期日。注意:DayOfTheWeek 是 ISO 8601 标准的(此标准为星期一是一周的第一天)。
9月1号当前周的第几天。当日在当周的第几天。
然后:第几周=((当前日期-第一步的“几年几月几日”) div 7 )+1就行了
var
Today,Reference:TDate;
ReferenceWeek, thisWeek, weekBetween:integer;
begin
Today := StrToDate(Edit2.Text);
Reference := StrToDate('02/05/2010');
weekBetween := Round(Today - Reference) div 7 +1;
if DayOfTheWeek(Reference)>DayOfTheWeek(Today) then weekBetween := weekBetween + 1;
Edit1.Text := IntToStr(weekBetween);
end;
Weeks := Days div 7;
if Days mod 7 > 0 then
Inc(Weeks);
唔如果是这样的话。可以试试看这个办法。1. 判断是否为同一年。2. 如果是同一年,用DateUtils里的函数WeekOfTheYear,分别取得两个日期(开学日期、当天)的所在周,相减,加1,即可。3. 如果不是同一年,则先用DateUtils里的函数WeeksInAYear,取得开学日期所在周数,和开学当年总计周数,相减得到该学期在开学当年的周数,再加上当天在本年的周数。大致是:
var
FromYear, FromMonth, FromDay,
ToYear, ToMonth, ToDay : word;
Week1, Week2, WeekInFromYear, WeeksBetween: integer;
begin
DecodeDate(FromDate, FromYear, FromMonth, FromDay);
DecodeDate(Now, ToYear, ToMonth, ToDay);
Week1 := WeekOfTheYear(FromDate);
Week2 := WeekOfTheYear(Now); if FromYear = ToYear then
begin
WeeksBetween := Week2 - Week1 + 1;
end else
begin
WeekInFromYear := WeeksInAYear(FromDate);
WeeksBetween := (WeekInFromYear - Week1 + 1) + Week2;
end;
end;没编译过,试试看吧。这是跨一年的,如果要跨多年(学期一般不会吧),作循环即可。
function TForm1.getStartWeek(begintime, endtime: tdatetime): integer;
var
AValue:integer;
keyTime:tdatetime;
begin
result:=0; avalue:=DayOfTheWeek(begintime);//开学时间是周几
//开学日期所在周的周一日期
case avalue of
1:keytime:=begintime;
2:keytime:=begintime-1;
3:keytime:=begintime-2;
4:keytime:=begintime-3;
5:keytime:=begintime-4;
6:keytime:=begintime-5;
7:keytime:=begintime-6;
end; result:=((trunc(endtime)-trunc(keytime)) div 7)+1;
end;
buding79
(赵云) 回答得不错.