⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 u_dtfunction.pas

📁 一组日期时间函数的使用显示代码 ,并将其中一部分进行了编译.
💻 PAS
字号:
unit U_dtFunction;

interface

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

type
  TForm1 = class(TForm)
    LdateYY: TLabel;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    Button7: TButton;
    Button8: TButton;
    GroupBox1: TGroupBox;
    GroupBox2: TGroupBox;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    Label12: TLabel;
    Label13: TLabel;
    Label14: TLabel;
    Label15: TLabel;
    Label16: TLabel;
    Label17: TLabel;
    Label18: TLabel;
    Label19: TLabel;
    Label20: TLabel;
    Label21: TLabel;
    Label22: TLabel;
    Label23: TLabel;
    Label24: TLabel;
    Label25: TLabel;
    Label26: TLabel;
    Label27: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure Button8Click(Sender: TObject);
    procedure Label1Click(Sender: TObject);
    procedure Label2Click(Sender: TObject);
    procedure Label3Click(Sender: TObject);
    procedure Label4Click(Sender: TObject);
    procedure Label5Click(Sender: TObject);
    procedure Label6Click(Sender: TObject);
    procedure Label7Click(Sender: TObject);
    procedure Label8Click(Sender: TObject);
    procedure Label9Click(Sender: TObject);
    procedure Label10Click(Sender: TObject);
    procedure Label11Click(Sender: TObject);
    procedure Label12Click(Sender: TObject);
    procedure Label13Click(Sender: TObject);
    procedure Label14Click(Sender: TObject);
    procedure Label15Click(Sender: TObject);
    procedure Label16Click(Sender: TObject);
    procedure Label17Click(Sender: TObject);
    procedure Label18Click(Sender: TObject);
    procedure Label19Click(Sender: TObject);
    procedure Label20Click(Sender: TObject);
    procedure Label21Click(Sender: TObject);
    procedure Label22Click(Sender: TObject);
    procedure Label23Click(Sender: TObject);
    procedure Label24Click(Sender: TObject);
    procedure Label25Click(Sender: TObject);
    procedure Label26Click(Sender: TObject);
    procedure Label27Click(Sender: TObject);
  private
    { Private declarations }

  public
{ Public declarations }
  end;

var
  Form1: TForm1;
  MyDateTime : TDateTime;
  m : Integer;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

begin
  MyDateTime :=Now;
  Showmessage(DateTimeToStr(MyDateTime));

end;

procedure TForm1.Button2Click(Sender: TObject);

begin
  MyDateTime :=Date; 
Showmessage(DateTimeToStr(MyDateTime));
end;

procedure TForm1.Button3Click(Sender: TObject);

begin
  MyDateTime :=Time; 
Showmessage(DateTimeToStr(MyDateTime));
end;




procedure TForm1.Button4Click(Sender: TObject);
begin   //Users [DateUtils] Units
MyDateTime :=Today;
Showmessage(DateTimeToStr(MyDateTime));

end;

procedure TForm1.Button5Click(Sender: TObject);
begin
  //uses  DateUtils
  MyDateTime :=Tomorrow; 
  //MyDateTime : Now +1;  //两者相同
Showmessage(DateTimeToStr(MyDateTime));  //不包含时间部分

end;

procedure TForm1.Button6Click(Sender: TObject);
begin
  //uses  DateUtils
  MyDateTime :=Yesterday;
  //MyDateTime : Now -1;  //两者相同
Showmessage(DateTimeToStr(MyDateTime));  //不包含时间部分

end;

procedure TForm1.Button7Click(Sender: TObject);
Var
  ThisYear: Word;
Begin
  thisyear := CurrentYear; //返回现在所属的年度
Showmessage(IntToStr(ThisYear));  //  4位整数


end;

procedure TForm1.Button8Click(Sender: TObject);
begin
//HoursPerDay、MinsPerDay、SecsPerDay及MsecsPerDay等日期与时间常数。
Showmessage('每天的小时数=' + IntToStr(HoursperDay));   //24
Showmessage('每天的分钟数=' + IntToStr(MinsperDay));   // 1440
Showmessage('每天的秒数=' + IntToStr(SecsperDay));   //24 
Showmessage('每天的毫秒数=' + IntToStr(MSecsperDay));   //24

end;

procedure TForm1.Label1Click(Sender: TObject);
begin
  Showmessage('几年=' + IntToStr(YearsBetween(Now,Now+560))); //1
end;

procedure TForm1.Label2Click(Sender: TObject);
begin
   //三者都相同   YearOf(返回指定日期的年度)
  Showmessage('年度=' + IntToStr(YearOf(Now)));
Showmessage('年度=' + IntToStr(YearOf(Date)));
Showmessage('年度=' + IntToStr(YearOf(Today)));
end;

procedure TForm1.Label3Click(Sender: TObject);

begin
Showmessage(DateTimeToStr(StartOfAYear(2009)));
//2001/1/1 早上12:00:00
end;

procedure TForm1.Label4Click(Sender: TObject);
begin
Showmessage(DateTimeToStr(EndOfAYear(2009)));
//2001/12/31 下午11:59:59
end;

procedure TForm1.Label5Click(Sender: TObject);

begin
Showmessage(DateTimeToStr(StartOfTheYear(Now)));
//指定的年度/1/1早上12:00:00
end;

procedure TForm1.Label6Click(Sender: TObject);
begin
Showmessage(DateTimeToStr(EndOfTheYear(Now)));
//指定年度/12/31下午11:59:59
end;

procedure TForm1.Label7Click(Sender: TObject);
begin
   myDateTime:= IncYear(Now,3); //往后加3年
  Showmessage(DateTimeToStr(myDateTime));

end;

procedure TForm1.Label8Click(Sender: TObject);
begin
  myDateTime := Now;
//两个函数获取相同的结果
m := MonthofTheYear(myDateTime);
  Showmessage(IntToStr(m));

end;

procedure TForm1.Label9Click(Sender: TObject);
var
i :Integer;
f :Double;
Begin
  i :=  MonthsBetween(Now,Now+89);//差89天
  f := MonthSpan(Now,Now+89);//差89天
  Showmessage(IntToStr(i));//2  
  Showmessage(FloatToStr(f));//2.924…
end;

procedure TForm1.Label10Click(Sender: TObject);
var

  Year,Month :Integer;
Begin
  Year := YearOf(Now);
  Month :=MonthOf(Now);
  //找出当前月份的第一天
  myDateTime := StartOfAMonth(Year,Month);
  Showmessage(DateTimeToStr(myDateTime));
  //找出当前月份的最后一天
  myDateTime := EndOfAMonth(Year,Month);
  Showmessage(DateTimeToStr(myDateTime));
  //找出当前月份的第一天
  myDateTime := StartOfTheMonth(Now);
  Showmessage(DateTimeToStr(myDateTime));
  //找出当前月份的最后一天
  myDateTime := EndOfTheMonth(Now);
  Showmessage(DateTimeToStr(myDateTime));
end;




procedure TForm1.Label11Click(Sender: TObject);
var
  Year,Month,Day :Word;
Begin
  //加上指定的月份
 myDateTime :=  IncMonth(Now,3);//加上三个月
  Showmessage(DateTimeToStr(myDateTime));
  Year := YearOf(Now);
  Day := Dayof(Now);
//加上指定的月份
IncAMonth(Year,Month,Day,3);
Showmessage('Month '+IntToStr(Month));


end;

procedure TForm1.Label12Click(Sender: TObject);
var

  Year: Word ;
  I : Integer ;
Begin
  Year := YearOf(Now) ;
  //Month := MonthOf(Now) ;
// 获取指定年份的总天数
  i := DaysInAYear(Year) ;
  Showmessage('DaysInAYear='+IntToStr (i)) ;
  i := DaysInYear(now) ;
  Showmessage('DaysInYear =' + IntToStr (i)) ;
  //获取指定月份的总天数

  //i := DaysInAMonth(Month) ;
  //Showmessage('DaysInAMonth =' + IntToStr(i)) ;
  i := DaysInMonth(Now) ;
  Showmessage( 'DaysInMonth = '+IntToStr(i)) ;

end;

procedure TForm1.Label13Click(Sender: TObject);
var
  Day : Word ;
begin
  //获取指定TDateTime的日期
  Day := DayOf(Now) ;
  Showmessage(IntToStr(Day)) ;
end;

procedure TForm1.Label14Click(Sender: TObject);
var
i:Integer ;
f : Double ;
begin
  //获取两个日期的天数
  f:=DaySpan(Now-100 , Now) ;
  i := DaysBetween(Now-100 , Now) ;
   Showmessage(intToStr(i)) ; //100
   Showmessage(FloatToStr(f)) ; //100

end ;


procedure TForm1.Label15Click(Sender: TObject);
var
  i : Integer ;
begin
  //返回指定TDateTime为该年的第几天
  i := DayOfTheYear(Now) ;
  Showmessage('今年的第'+IntToStr(i)+'天') ;
  //返回指定TDateTime为该月的第几天
  i := DayOfTheMonth(Now) ;
  Showmessage('今月的第'+IntToStr(i)+'天') ;
  //返回指定TDateTime为该周的第几天(星期一为第一天)
  i := DayOfTheWeek(Now) ;

 Showmessage('今周的第'+IntToStr(i)+'天') ;
end ;


procedure TForm1.Label16Click(Sender: TObject);

var
  tmpDateTime : TDateTime ;
  AYear , ADayOfYear , AMonth , ADay :Word ;
begin
  AYear := 2009 ; //指定年度
  ADayOfYear := 32 ;//第32天
  tmpDateTime :=StartOfADay(AYear , ADayOfYear) ;
  Showmessage(DateTimeToStr(tmpDateTime)) ; //2009/02/01

  AMonth := 1 ;
  ADay := 32 ; //从AMonth第一天起第32天
  TmpDateTime := StartOfADay(AYear , AMonth , ADay) ;
Showmessage(DateTimeToStr(tmpDateTime)) ; //2009/02/01
end ;



procedure TForm1.Label17Click(Sender: TObject);
var
weeks : word ;
begin
  weeks :=weeksInAYear(2009) ;
  Showmessage(IntToStr(weeks)) ; //52
  Weeks := WeeksInYear(Now) ;
  Showmessage(IntToStr(weeks)) ; //52

end;

procedure TForm1.Label18Click(Sender: TObject);
Var
  I : Word;
Begin
  I :=WeekOf(Now);
Showmessage('现在是第' + IntToStr(i)+'周');
i := WeekOfTheYear(Now );
Showmessage('是今年的第' + IntToStr(i)+'周');
I := WeekOfTheMonth(Now);
  Showmessage('为本月的第'  + IntToStr(i)+'周');  
end;


procedure TForm1.Label19Click(Sender: TObject);
Var
  I : Integer;
  F :Double;
Begin
  I :=WeeksBetween(Now , Now + 29);
Showmessage(InttoStr(i));  //4
F := WeekSpan(Now , Now + 29);
  Showmessage(FloatToStr(f));   //4.14…  
end;

procedure TForm1.Label20Click(Sender: TObject);
Var
  tempDateTime: TDateTime;
  AYear , AWeekOfYear , ADayOfWeek  : Word;
Begin
  AYear := 2009;
AWeekOfYear :=21;  //第二周
ADayOfWeek :=1;  //第一天
tempDateTime := StartofAweek(AYear, AWeekOfYear, ADayOfWeek);
//2001/01/08  AM 12:00:00:00
showmessage(DateTimeToStr(tempDateTime));
//AYearf := 2001;
//AWeekofYear :=2; //第二周
ADayOfWeek :=7 ;// 第七天
tempDatetime := EndOfAWeek(AYear, AWeekOfYear, AdayOfWeek);
//2001/01/14  Pm 11:59:59
  Showmessage(DateTimeToStr(tempDateTime));   //4.14…
end;


procedure TForm1.Label21Click(Sender: TObject);
var
  Hours : Integer ;
  f : Double ;

begin
  Hours := HoursBetween(Now , Now+0.9) ; //加上0.9天
  Showmessage(intToStr(Hours)) ; //21

  f := HourSpan(Now , Now+0.9) ; //加上0.9天 
  Showmessage(FloatToStr(f)) ; //21.6….
end ; 


procedure TForm1.Label22Click(Sender: TObject);
var
  Hours : Integer ;
Begin
  Hours := HourOf(Now) ;   //获取TDateTime格式中的时数
  Showmessage('现在时间为'+ IntToStr(Hours)+'时') ;
  Hours := HourOfTheYear(Now) ;  //返回指定TDateTime变量为该年的第几小时
  Showmessage('现在时间为本年的第'+IntToStr(Hours)+'小时') ;
  Hours := HourOfTheMonth(Now) ;  //返回指定TDateTime变量为该月的第几小时
  Showmessage('现在时间为本月的第'+IntToStr(Hours)+'小时') ;
Hours := HourOfTheWeek(Now) ; //返回指定TDateTime变量为该周的第几小时
  Showmessage('现在时间为本周的第'+IntToStr(Hours)+'小时') ;
Hours := HourOfTheDay(Now) ;//返回指定TDateTime变量为该日的第几小时
  Showmessage('现在时间为本日的'+IntToStr(Hours)+'时') ;
end ;


procedure TForm1.Label23Click(Sender: TObject);

begin
  myDateTime := IncHour(Now, 23) ; //增加23小时
  Showmessage(DateTimeToStr(myDateTime)) ;
end ;


procedure TForm1.Label24Click(Sender: TObject);
var
 i:Integer ;
 f :Double ;
 w : Word ;
begin        //返回两个指定TDateTime变量间的分钟数
  i := MinutesBetween(Now , Now + 1) ; //增加24小时
  Showmessage(IntToStr(i)) ; //1440
  f := MinuteSpan(Now , Now + 1.1) ; //增加24*1.1小时
  Showmessage(FloatToStr(f)) ; //1583.99….
  
  w := MinuteOf(Now) ; //显示当前的分钟数
  Showmessage(IntToStr(w)) ; //介于0~59之间
End ;


procedure TForm1.Label25Click(Sender: TObject);
var
  i : Integer ;
  DateTime1 , DateTime2 : TDateTime ;
begin
  DateTime1 := Now ;
  DateTime2 := IncMonth(Now , 1) ; //加上1个月
  i := CompareTime(DateTime1 , DateTime2) ;
  Showmessage(IntToStr(i)) ; //0表示不考虑日期部分

  DateTime2 := IncMinute(Now , 10) ; //加上10分钟
  i := CompareTime(DateTime1 ,DateTime2) ;
  Showmessage(IntToStr(i)) ; //-1表示DateTime1< DateTime2

  DateTime2 := IncMinute(Now , -10) ; //减10分钟
  i := CompareTime(DateTime1, DateTime2) ;
  Showmessage(IntToStr(i)) ; //I 表示DateTime1 > DateTime2
End ;


procedure TForm1.Label26Click(Sender: TObject);
var
  AValue: TDateTime ;
  AYear, AMonth, ADay, AHour, AMinute, ASecond, AMilliSecond: Word ;
  Str :String ;
begin
  AValue := Now ;
 DecodeDate(AValue, AYear, AMonth, ADay) ;
  Str := '今天是' + IntToStr(AYear) + '年'+ IntToStr(AMonth) + '月'+ IntToStr(ADay) + '日' ;
Showmessage(Str) ;

DecodeTime(AValue, AHour, AMinute, ASecond, AMilliSecond) ;
Str := '现在是' + IntToStr(AHour) + '时' + IntToStr(AMinute) + '分' + IntToStr(ASecond) + '秒' + IntToStr(AMilliSecond) + '毫秒' ;
Showmessage(Str) ;

DecodeDateTime(AValue, AYear, AMonth, ADay, AHour, AMinute, ASecond, AMilliSecond) ;
Str := '现在是' + IntToStr(AYear) + '年' + IntToStr(AMonth) + '月' + IntToStr(ADay) + '日' + IntToStr(AHour) + '时' + IntToStr(AMinute) + '分' + IntToStr(ASecond) + '秒' + IntToStr(AMilliSecond) + '毫秒' ;
Showmessage(Str) ;
End ;


procedure TForm1.Label27Click(Sender: TObject);
var
  AValue: TDateTime ;
AYear, AMonth, ADay, ADayOfYear, AWeekOfMonth, AWeekOfYear, ADayOfWeek, ANthDayOfWeek : Word ;
Str :String ;
begin
AValue := Now ;
  DecodeDateDay(AValue, AYear, ADayOfYear) ;
  Str := '今天是' + IntToStr(AYear) + '年的第'+ IntToStr(ADayOfYear) + '天';
Showmessage(Str) ;

DecodeDateWeek(AValue, AYear, AWeekOfYear, ADayOfWeek) ;
Str := '今天是' + IntToStr(AYear) + '年, 第' + IntToStr(AWeekOfYear) + '周的第' + IntToStr(ADayOfWeek) + '天' ;
Showmessage(Str) ;

DecodeDateFully(AValue, AYear, AMonth, ADay, ADayOfWeek) ;
Str := '今天是' + IntToStr(AYear) + '年' + IntToStr(AMonth) + '月' + IntToStr(ADay) + '日, 且为该周的第' + IntToStr(ADayOfWeek) + '天';
Showmessage(Str) ;
DecodeDateMonthWeek(AValue, AYear, AMonth, ADay, ADayOfWeek) ;
Str := '今天是' + IntToStr(AYear) + '年' + IntToStr(AMonth) + '月' + IntToStr(ADay) + '日, 且为该月的第' + IntToStr(AWeekOfMonth) + '周, 且为该周的第' + IntToStr(ADayOfWeek) + '天'  ;
Showmessage(Str) ;

DecodeDayOfWeekInMonth(AValue, AYear, AMonth, AnthDayOfWeek, ADayOfWeek) ;
Str := '今天是' + IntToStr(AYear) + '年' + IntToStr(AMonth) + '月' + IntToStr(ADay) + '日, 且为该月的第' + IntToStr(ANthDayOfWeek) +'周与该周的第' + IntToStr(ADayOfWeek) + '天' ;
Showmessage(Str) ;
End ;


end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -