算算今天是第几周?

Author: Purple Date: 2000年 第36期

  新的学期又到了,听说第十周有门课要考试了,到底今天是第几周呢?算起来真麻烦,让我们编程来解决!利用C++ Builder中的TDateTime类及其相关的方法可以很轻松的解决这个问题。
  首先需要说明的是,对于每个日期时刻都有一个整型(对于纯日期)或双精度型数值与其相对应。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组件框中的字符串来设置不同的日期起始值。由于这里没有对字符串作为日期表达式合法性的判断,所以你输入的日期要用原来的格式,否则会@#$%^&...