系统时间其实就是浮点数,与小时制没有关系。 你可以自己将时间格式化成24小时进制即可比如: var s:string; s:=formatdatetime('yyyy"年"m"月"d"日"h"时"n"分"s"秒"',now);
楼上 所言既是 s := FormatDateTime('HH:NN:SS', Now); //注意这里 小时 分钟 h n 必须 s 可选 ShowMessage('24小时制时间是:' + s); 多谢提醒
系统当前时间,nownow 是 TDataTime类型,是一个Double浮点数。 这个浮点数的整数位记录年月日,小数位记录时分秒毫秒。 参考EncodeTime源码, Time := (Hour * (MinsPerHour * SecsPerMin * MSecsPerSec) + Min * (SecsPerMin * MSecsPerSec) + Sec * MSecsPerSec + MSec) / MSecsPerDay; 不难得出:当新一天来临 那一刻Time = 0.即小数位=0,整数位自增1。所以是要判段 now的整数位是否改变,即可得出当前是否凌晨。下面的代码仅供参考:procedure TForm1.Timer1Timer(Sender: TObject); begin cur_date := Trunc(now); if cur_date > pre_date then begin pre_date := cur_date; ShowMessage('Tt is time!'); end; end;procedure TForm1.FormCreate(Sender: TObject); begin per_date := Trunc(now); end;//完毕
cur_date pre_date 都是整型
procedure TForm1.Button1Click(Sender: TObject); var s: string; begin GetFormatSettings; s := LongTimeFormat; if copy(s, 1, 2) = 'H' then showmessage('24小时制式') else showmessage('12小时制式'); end;
你可以自己将时间格式化成24小时进制即可比如:
var
s:string;
s:=formatdatetime('yyyy"年"m"月"d"日"h"时"n"分"s"秒"',now);
s := FormatDateTime('HH:NN:SS', Now); //注意这里 小时 分钟 h n 必须 s 可选
ShowMessage('24小时制时间是:' + s);
多谢提醒
这个浮点数的整数位记录年月日,小数位记录时分秒毫秒。
参考EncodeTime源码,
Time := (Hour * (MinsPerHour * SecsPerMin * MSecsPerSec) +
Min * (SecsPerMin * MSecsPerSec) +
Sec * MSecsPerSec +
MSec) / MSecsPerDay;
不难得出:当新一天来临 那一刻Time = 0.即小数位=0,整数位自增1。所以是要判段 now的整数位是否改变,即可得出当前是否凌晨。下面的代码仅供参考:procedure TForm1.Timer1Timer(Sender: TObject);
begin
cur_date := Trunc(now);
if cur_date > pre_date then
begin
pre_date := cur_date;
ShowMessage('Tt is time!');
end;
end;procedure TForm1.FormCreate(Sender: TObject);
begin
per_date := Trunc(now);
end;//完毕
var
s: string;
begin
GetFormatSettings;
s := LongTimeFormat;
if copy(s, 1, 2) = 'H' then
showmessage('24小时制式')
else
showmessage('12小时制式');
end;