delphi 输入年月判断天数
添加两个edit控件分别填写年份和月份。再添加一个计算按钮。点击之后弹出某年某月。有几天。求大神解答有图求大神解答啊~谢谢unitUnit1;interfaceusesW...
添加两个edit控件 分别填写 年份和月份 。 再添加一个计算按钮。点击之后弹出某年某月 。有几天。求大神解答
有图
求大神解答啊~谢谢
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
lbl1: TLabel;
edt1: TEdit;
lbl2: TLabel;
edt2: TEdit;
lbl3: TLabel;
btn1: TButton;
edt3: TEdit;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
var y,m;
y:=StrToIntDef(edt1.Text,2000);
m:=StrToIntDef(edt2.Text,2);
case m of
1,3,5,7,8,10,12:
d:=31;
4,6,8,11:
d:=30;
else
if IsLeapYear(y)
then d:=29
else d:=28;
end;
lbl3.Caption:='天数:'+INtToStr(d);
之后怎么写 展开
有图
求大神解答啊~谢谢
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
lbl1: TLabel;
edt1: TEdit;
lbl2: TLabel;
edt2: TEdit;
lbl3: TLabel;
btn1: TButton;
edt3: TEdit;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
var y,m;
y:=StrToIntDef(edt1.Text,2000);
m:=StrToIntDef(edt2.Text,2);
case m of
1,3,5,7,8,10,12:
d:=31;
4,6,8,11:
d:=30;
else
if IsLeapYear(y)
then d:=29
else d:=28;
end;
lbl3.Caption:='天数:'+INtToStr(d);
之后怎么写 展开
展开全部
//获取2个时间之间的天数
function DaysBetween(Date1, Date2: TDateTime): integer;
begin
Result := Trunc(Date2) - Trunc(Date1) + 1;
if Result < 0 then Result := 0;
end;
//得到本月的第一一天
function dateBeginOfMonth(D: TDateTime): TDateTime;
var
Year, Month, Day: Word;
begin
DecodeDate(D, Year, Month, Day);
Result := EncodeDate(Year, Month, 1);
end;
//得到本月的最后一天
function dateEndOfMonth(D: TDateTime): TDateTime;
var
Year, Month, Day: Word;
begin
DecodeDate(D, Year, Month, Day);
if Month = 12 then
begin
Inc(Year);
Month := 1;
end else
Inc(Month);
Result := EncodeDate(Year, Month, 1) - 1;
end;
懒得替你全改 不过给你三个函数
1 获得那个月第一天
2 获得那个月最后一天
3 获得那个月相差天数
确保edit 输入是 2013之类的数字 edit2 是03之类的数字
至于时间 那就不用我说了吧
T1:= StrToDateTime(edt1.Text+'-'+edt2.Text+'-2 12:12:12');
D1:=dateBeginOfMonth(T1);
D2:=dateEndOfMonth(T2);
天数:=DaysBetween(D1,D2);
这个用的代码较多,自然不是最好的办法 但使用方便
function DaysBetween(Date1, Date2: TDateTime): integer;
begin
Result := Trunc(Date2) - Trunc(Date1) + 1;
if Result < 0 then Result := 0;
end;
//得到本月的第一一天
function dateBeginOfMonth(D: TDateTime): TDateTime;
var
Year, Month, Day: Word;
begin
DecodeDate(D, Year, Month, Day);
Result := EncodeDate(Year, Month, 1);
end;
//得到本月的最后一天
function dateEndOfMonth(D: TDateTime): TDateTime;
var
Year, Month, Day: Word;
begin
DecodeDate(D, Year, Month, Day);
if Month = 12 then
begin
Inc(Year);
Month := 1;
end else
Inc(Month);
Result := EncodeDate(Year, Month, 1) - 1;
end;
懒得替你全改 不过给你三个函数
1 获得那个月第一天
2 获得那个月最后一天
3 获得那个月相差天数
确保edit 输入是 2013之类的数字 edit2 是03之类的数字
至于时间 那就不用我说了吧
T1:= StrToDateTime(edt1.Text+'-'+edt2.Text+'-2 12:12:12');
D1:=dateBeginOfMonth(T1);
D2:=dateEndOfMonth(T2);
天数:=DaysBetween(D1,D2);
这个用的代码较多,自然不是最好的办法 但使用方便
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
系统有一个函数 function DaysInAMonth(const AYear, AMonth: Word): Word;
uses dateutils;
传入年 和 月 可以直接得到天数
lbl3.caption := inttostr(strtoint(edit1.text), strtoint(edit2.text));
uses dateutils;
传入年 和 月 可以直接得到天数
lbl3.caption := inttostr(strtoint(edit1.text), strtoint(edit2.text));
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这些东西,DELPHI都已经提供专门的函数来进行处理,如果不是想练习的话,了解一下DELPHI提供的函数更有必要
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询