📄 u_dtfunction.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 + -