按输入时间如何计算是第几周,周的日期如何显示等 ( 积分: 30 )

W

wlt3022

Unregistered / Unconfirmed
GUEST, unregistred user!
按输入时间如何计算是第几周,周的日期如何显示
请高手指点。谢谢
 
计算日期与1月1日的差并除以7取整
(strToDate(2007-02-02') - strToDate(2007-01-01') ) div 7
 
给楼主2个方法 剩下的楼主靠日期相减解决
uses
DateUtils;

ShowMessage(IntToStr(WeekOfTheYear(StrToDateTime('2007-02-02 00:00:00'))));
ShowMessage(IntToStr(DayOfTheWeek(StrToDateTime('2007-02-02 00:00:00'))));
 
好象没那么简单吧
 
用WeekOfTheYear算出今天所在的week是该年的第几周

用DayOfTheWeek算出改天是这周的第几天 比如是3
那么你对TDatetime类型进行相应的加减操作就可以得出
本周的所有日期
 
Avalon,谢谢的指点。
再好代码。谢谢!
 
用sql server 2000函数
select dateadd(week,'2007-02-02') as '周'
就这样就可以啦
 
不用sql server 2000函数.
 
procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
d1, d2: integer;
y, m, d: word;
begin
//计算日期与1月1日的差并除以7取整
d1 := trunc(strToDate('2007-01-01'));
d2 := trunc(strToDate(edit1.text));
i := (d2 - d1) div 7 + 1;
decodeDate(d1 + ((d2 - d1) div 7) * 7, y, m, d);
showMessage('这是第' + intToStr(i) + '周 本周第一天是' + intToStr(d) + '日')
end;
 
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

uses
DateUtils;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
I: Integer;
Today: TDateTime;
WeekNum: Integer;
DayNum: Integer;
Days: String;
begin
Today := NOW;
WeekNum := WeekOfTheYear(Today);
DayNum := DayOfWeek(Today);
Today := Now - DayNum + 1;
for I := 1 to 7 do
begin
Days := Days + FormatDateTime('DD', Today + I) + ' ';
end;
ShowMessage('本周是第' + IntToStr(WeekNum) + '周,本周包括的日期是:' + Trim(Days));
end;

end.
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
顶部