Delphi时间比较 如何格式化时间
代码帮忙修改下哈unitUnit1;interfaceusesWindows,Messages,SysUtils,Variants,Classes,Graphics,Co...
代码 帮忙修改下哈
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
Timer1: TTimer;
Label2: TLabel;
Label3: TLabel;
Timer2: TTimer;
procedure Timer1Timer(Sender: TObject);
procedure Timer2Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
Ihg1,Ihg2:tdatetime;
implementation
{$R *.dfm}
procedure TForm1.Timer1Timer(Sender: TObject);
begin
label1.Caption:=formatdatetime('hh',now);
Ihg1:=6;
Ihg2:=23;
if formatdatetime('hh',now)<=ihg1 and formatdatetime('hh',now)=> Ihg2 then
showmessage('需要关机!');
end;
end;
end. 展开
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
Timer1: TTimer;
Label2: TLabel;
Label3: TLabel;
Timer2: TTimer;
procedure Timer1Timer(Sender: TObject);
procedure Timer2Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
Ihg1,Ihg2:tdatetime;
implementation
{$R *.dfm}
procedure TForm1.Timer1Timer(Sender: TObject);
begin
label1.Caption:=formatdatetime('hh',now);
Ihg1:=6;
Ihg2:=23;
if formatdatetime('hh',now)<=ihg1 and formatdatetime('hh',now)=> Ihg2 then
showmessage('需要关机!');
end;
end;
end. 展开
6个回答
2013-04-09
展开全部
你刚学Delphi吧,if formatdatetime('hh',now)<=ihg1 and formatdatetime('hh',now)=> Ihg2 then这句大于等于符号你写错了,还有formatdatetime的返回类型是string,而你的ihg1,ihg2全局变量是TDateTime型的,类型不一致怎么比较呢?
如果你的意思是在时间小于等于6点或者时间大于等于23点时要求关机,那么你大可以参考下面的代码:
定义变量的时候这样:
var
ihg1, ihg2: string;
初始化时:
ihg1 := '6';
ihg2 := '23';
比较代码:
if (formatdatetime('hh',now)<=ihg1) and (formatdatetime('hh',now)>=ihg2) then
showmessage('需要关机!'); 答案补充 顺便说一句,如果这样写,还是有点问题,当时间是12小时之内的时候返回值将为两位数,如:
假如现在时间是上午7点,那么formatdatetime('hh',now)返回值将是'07',那在比较的时
候就有问题了,7>6,而'07'却比'6'小,所以这样也不对,你可以把ihg1:='6'改成'06',也
可以把formatdatetime('hh',now)改成formatdatetime('h', now),这样子在比较的时候就不会有问题了
如果你的意思是在时间小于等于6点或者时间大于等于23点时要求关机,那么你大可以参考下面的代码:
定义变量的时候这样:
var
ihg1, ihg2: string;
初始化时:
ihg1 := '6';
ihg2 := '23';
比较代码:
if (formatdatetime('hh',now)<=ihg1) and (formatdatetime('hh',now)>=ihg2) then
showmessage('需要关机!'); 答案补充 顺便说一句,如果这样写,还是有点问题,当时间是12小时之内的时候返回值将为两位数,如:
假如现在时间是上午7点,那么formatdatetime('hh',now)返回值将是'07',那在比较的时
候就有问题了,7>6,而'07'却比'6'小,所以这样也不对,你可以把ihg1:='6'改成'06',也
可以把formatdatetime('hh',now)改成formatdatetime('h', now),这样子在比较的时候就不会有问题了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
var
Ihg1,Ihg2:ttime;
begin
Ihg1:=StrToTime(6:00);
Ihg2:=StrToTime(23:00);
if (Time()<=ihg1) and (Time()>= Ihg2) then
showmessage('需要关机!');
end;
PS:你这个只涉及到时间,没有涉及日期,所以不必要用带日期的时间格式。
Ihg1,Ihg2:ttime;
begin
Ihg1:=StrToTime(6:00);
Ihg2:=StrToTime(23:00);
if (Time()<=ihg1) and (Time()>= Ihg2) then
showmessage('需要关机!');
end;
PS:你这个只涉及到时间,没有涉及日期,所以不必要用带日期的时间格式。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
比较两个时间,你可以直接让这两个时间进行减法计算,得到相差天数,就得到结果了。
If (date-StrToDate('2015-11-6'))>0 then
Begin
Application.MessageBox('当前日期大于指定日期','提示',0)
End
Else
Begin
Application.MessageBox('当前日期小于指定日期','提示',0)
End;
If (date-StrToDate('2015-11-6'))>0 then
Begin
Application.MessageBox('当前日期大于指定日期','提示',0)
End
Else
Begin
Application.MessageBox('当前日期小于指定日期','提示',0)
End;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
TDateTime就是 Double的另一种说法,可以直接比较大小,如果要使用专业级的,引用
DateUtils 这个单元,此单元是对日期时间专门做了一些处理。
DateUtils 这个单元,此单元是对日期时间专门做了一些处理。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-04-09
展开全部
你可以定义 ihg1,ihg2为integer类型,if strtoint(formatdatetime('hh',now))<=ihg1 ....
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询