用Delphi获取当前系统时间
来源:互联网 发布:股票软件数据接口 编辑:程序博客网 时间:2024/05/04 02:34
在开发应用程序时往往需要获取当前系统时间。尽管Y2K似乎已经平安过去,但在我们新开发的应用程序中还是要谨慎处理“时间”问题。
在《融会贯通--Delphi4.0实战技巧》(以下简称“该书”)第89页专门介绍了两种获取当前系统时间的方法,但这两种方法都存在不足或错误,以下就此进行讨论。
该书第一种方法是利用Time()函数获得当前系统时间,返回结果是TDateTime结构类型的变量。例如:
procedure TForm1.Button2Click(Sender: TObject);
var
DateTime:TDateTime;
begin
DateTime:=Time();
Caption:=DateToStr(DateTime)+' '+TimeToStr(DateTime);
end;
但不论何日期,其结果却都是99-12-30 xx:xx:xx, 显然日期出错了。通过分析Delphi的帮助,Time()用于返回正确的“时间--时分秒”即TimeToStr(DateTime),而不应该用于返回“日期”。事实上,单独用于返回日期的系统函数是Date。
那么有什么是既可返回正确的“时分秒”又可返回正确的“年月日”呢? 可以用Now函数,例如:
procedure TForm1.Button1Click(Sender: TObject);
var
mytime: TDateTime;
begin
mytime:=Now;
Caption:=DateToStr(mytime)+' '+TimeToStr(mytime);
//或直接用 Caption := DateTimeToStr(Now);
end;
用Now返回的日期格式中年只有2位,即2000年显示为00, 这似乎不太令人满意. 此外Now和Time都只能获得精确到秒的时间,为了得到更精确的毫秒级时间,可以使用API函数GetSystemTime,它对应的TSystemTime类型的定义为:
TSystemTime = record
wYear: Word;
wMonth: Word;
wDayOfWeek: Word;
wDay: Word;
wHour: Word;
wMinute: Word;
wSecond: Word;
wMilliseconds: Word;
end;
显然,在程序逻辑中还能够方便地使用其结构成?时---各类时间值,因此使用函数GetSystemTime具有很大优越性。但该书中该函数的用法是错误的,通过查阅Windows SDK帮助可知,该函数原型为:
VOID GetSystemTime(LPSYSTEMTIME lpst),参数指针lpst获取系统时间,因此可如以下程序段实现:
procedure TForm1.Button3Click(Sender: TObject);
var
SysTime: TsystemTime;
begin
GetSystemTime(SysTime);
Caption:=IntToStr(SysTime.wYear)+' '+IntToStr(SysTime.wMonth);
//if SysTime.wYear>2000 then
// ......在程序逻辑中利用获取的各类时间值
- 用Delphi获取当前系统时间
- 用Delphi获取当前系统时间
- 用Delphi获取当前系统时间
- 用Delphi获取当前系统时间
- delphi获取系统当前时间
- 获取系统当前时间
- 获取当前系统时间
- 获取当前系统时间
- 获取系统当前时间
- 获取系统当前时间
- 获取当前系统时间
- 获取系统当前时间
- 获取系统当前时间
- 获取系统当前时间
- 获取当前系统时间
- 获取系统当前时间
- 获取系统当前时间
- 获取当前系统时间
- (转贴)我们期待自己成为一个优秀的软件模型设计者,但是,要怎样做,又从哪里开始呢?
- Delphi中强制结束一个进程
- 与青春有关的日子经典对白
- 农妇卖石榴
- 博客开通致贺
- 用Delphi获取当前系统时间
- LoadStr()怎么用
- VC 工具栏
- Delphi防止同时出现多个应用程序实例
- 本机可以访问iis服务器,其他机器不能访问?
- 浅析C++中虚函数的调用及对象的内部布局
- delphi 精要-读书笔记(内存分配释放)
- j2me 创建欢迎界面
- DBGRIDEH 组件在Borland开发工具中应用全攻略