如何得到任意一个月跨几周? 一般跨5周,但2004.10跨了6周,就要得到6.找了几个函数好象都不行. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 自己算好了,1,计算天数,设为k2,计算第一天是否为该周第一天,设为n 3, 计算最后一天是否为该周倒数第一天,设为m4, 结果为:r=(k - n - m ) div 7 ; if n<>0 then r=r+1 if m<>0 then r=r+1 给出日期,如何知道是这一年的第几周?function WeekofYear(Date: TDate): integer; varFirstDay, FirstWeekEnd, NowWeekEnd: TDate;Year, Month, Day: word;beginDecodeDate(Date, Year, Month, Day);FirstDay := EncodeDate(Year, 1, 1);FirstWeekEnd := FirstDay + 7 - DayofWeek(FirstDay);NowWeekEnd := Date + 7 - DayofWeek(Date);Result := Round(NowWeekEnd - FirstWeekEnd) div 7 + 1;end; uses DateUtilsfunction WeeksBetween(const ANow, AThen: TDateTime): Integer;I := WeeksBetween(StrToDate('2004-3-1'), EndOfTheMonth(StrToDate('2004-3-1')); 这是一个非常有意思的问题,我想了一下,得到下面的解决思路:1、最小的月是28天,则最少也要跨四周,最多跨五周;2、最大的月是31天,则最少也要跨五周,最多跨六周;3、如果本月是28天,只有当本月1号是星期日时,本月才只跨四周,否则都跨五周;4、如果本月是29天,则无论什么情况,本月都跨且只跨五周;5、如果本月是30天,则只有当本月的1号是星期六时,本月才跨六,其它情况都要跨五周;6、如果本月是31天,则只有当本月的1号是星期五或星期六时,本月才跨六周,其它情况者只跨五周。因此可得下面的解决算法:uses DateUtils //要引用DateUtils单元function GetWeekCount(AYear, AMonth: Word): Word;var DayCount, DW: Word; //DW: DayOfWeekbegin DayCount := DaysInAMonth(AYear, AMonth); Case DayCount of 28: begin DW := DayOfWeek(StrToDate(IntToStr(AYear) + '-' + IntToStr(AMonth) + '-' + '1')); if DW = 1 then Result := 4 else Result := 5; end; 29: Result := 5; 30: begin DW := DayOfWeek(StrToDate(IntToStr(AYear) + '-' + IntToStr(AMonth) + '-' + '1')); if DW = 7 then Result := 6 else Result := 5; end; 31: begin DW := DayOfWeek(StrToDate(IntToStr(AYear) + '-' + IntToStr(AMonth) + '-' + '1')); if DW > 4 then Result := 6 else Result := 5; end; end;end; 可以用以下这个函数看看:function WeekOfTheMonth(const AValue: TDateTime): Word; overload;function WeekOfTheMonth(const AValue: TDateTime; var AYear, AMonth: Word): Word; overload; 这个函数的返回值是1---6. tchart pages属性 程序抓图的问题 xml的读取 ADOQuery.seek 怎么用?就是要查某个Field的值为特定值的记录怎么做? TreeView节点Data释放问题? 怎样把Label控件竖着放? 关于delphi编译的问题(在线等) 控件的名字是一个变量,怎样根据这个名字得到该控件 ? 不可视的控件如何用啊!!!大家帮我一下,我是新手!!! 请问怎么样去掉TTREEVIEW里的水平与垂直滚动条? 请问怎样取得时间控件中的时间? 感人的故事
varFirstDay, FirstWeekEnd, NowWeekEnd: TDate;Year, Month, Day: word;beginDecodeDate(Date, Year, Month, Day);FirstDay := EncodeDate(Year, 1, 1);FirstWeekEnd := FirstDay + 7 - DayofWeek(FirstDay);NowWeekEnd := Date + 7 - DayofWeek(Date);Result := Round(NowWeekEnd - FirstWeekEnd) div 7 + 1;end;
uses DateUtils //要引用DateUtils单元function GetWeekCount(AYear, AMonth: Word): Word;
var
DayCount, DW: Word; //DW: DayOfWeek
begin
DayCount := DaysInAMonth(AYear, AMonth);
Case DayCount of
28:
begin
DW := DayOfWeek(StrToDate(IntToStr(AYear) + '-' + IntToStr(AMonth) + '-' + '1'));
if DW = 1 then Result := 4
else Result := 5;
end;
29: Result := 5;
30:
begin
DW := DayOfWeek(StrToDate(IntToStr(AYear) + '-' + IntToStr(AMonth) + '-' + '1'));
if DW = 7 then Result := 6
else Result := 5;
end;
31:
begin
DW := DayOfWeek(StrToDate(IntToStr(AYear) + '-' + IntToStr(AMonth) + '-' + '1'));
if DW > 4 then Result := 6
else Result := 5;
end;
end;
end;
function WeekOfTheMonth(const AValue: TDateTime): Word; overload;
function WeekOfTheMonth(const AValue: TDateTime; var AYear, AMonth: Word): Word; overload; 这个函数的返回值是1---6.