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.
展开
 我来答
匿名用户
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),这样子在比较的时候就不会有问题了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
这个实在些
2013-04-08 · TA获得超过552个赞
知道小有建树答主
回答量:763
采纳率:0%
帮助的人:635万
展开全部
var
Ihg1,Ihg2:ttime;

begin

Ihg1:=StrToTime(6:00);
Ihg2:=StrToTime(23:00);

if (Time()<=ihg1) and (Time()>= Ihg2) then
showmessage('需要关机!');

end;

PS:你这个只涉及到时间,没有涉及日期,所以不必要用带日期的时间格式。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
none_six
2015-10-10 · TA获得超过325个赞
知道小有建树答主
回答量:479
采纳率:100%
帮助的人:368万
展开全部
比较两个时间,你可以直接让这两个时间进行减法计算,得到相差天数,就得到结果了。

If (date-StrToDate('2015-11-6'))>0 then
Begin
Application.MessageBox('当前日期大于指定日期','提示',0)
End
Else
Begin
Application.MessageBox('当前日期小于指定日期','提示',0)
End;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ch2001023
2013-04-09 · 超过44用户采纳过TA的回答
知道小有建树答主
回答量:120
采纳率:66%
帮助的人:83.3万
展开全部
TDateTime就是 Double的另一种说法,可以直接比较大小,如果要使用专业级的,引用
DateUtils 这个单元,此单元是对日期时间专门做了一些处理。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-04-09
展开全部
你可以定义 ihg1,ihg2为integer类型,if strtoint(formatdatetime('hh',now))<=ihg1 ....
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式