算算今天是第几周?
首先需要说明的是,对于每个日期时刻都有一个整型(对于纯日期)或双精度型数值与其相对应。TDateTime类对应数值的整数部分代表距1899年12月30日的天数,而小数部分则代表当天的具体时刻。
下面是一些具体的TDateTime类数值对应的日期和时刻。
0 1899-12-30 12:00 am
2.75 1900-1-1 6:00 pm
-1.25 1899-12-29 6:00 am
35065 1996-1-1 12:00 am
利用TDateTime类的operator方法就可以对这些数值进行操作,从而计算出今天是第几周。下面是一个简单的示例程序。
先建立一个Form,然后在这个Form上加上一个Edit组件、一个Label组件和一个Button组件,并把Edit组件的Text属性改为2000-9-4(起始日期),其余所有的属性都可以保持缺省值。
在Button1的Click事件中加入如下一小段代码:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
∥定义两个TDateTime类变量,起始时间和现在时间
TDateTime begin,now;
int week=0;
∥把Edit1组件中的字符串转换为日期
begin=StrToDateTime(Edit1->Text);
∥得到现在日期
now=Now();
∥计算今天的周数,floor函数取整,需要在程序起始部分加入#include <math.h>。
∥大家可以根据实际情况适当更改下面的表达式。
week=floor(now.operator -(begin))/7+1;
∥在Label1组件中显示今天的周数
Label1->Caption=week;
Label1->Refresh();
}
运行该程序,按下Button1按钮就可以显示出今天是第几周,可以更改Edit1组件框中的字符串来设置不同的日期起始值。由于这里没有对字符串作为日期表达式合法性的判断,所以你输入的日期要用原来的格式,否则会@#$%^&...