GetSystemTime();//API
Now();
Now();
解决方案 »
- 问个超级难题,禁止webbrowser滚动(100RMB报酬)
- 求Delphi下MessageBox窗口停留的原理!
- 我写了一个打印控制程序,请提宝贵意见:
- 如何把Dbgrid选出来的数据导入到access中去!要用代码!(在线等)
- 如何获取IMAGE中图相的路径
- 如何将Image1中的aa.jpg图像旋转90度?
- 将一个单独的窗体(很多控件和程序)改成另一个父类的子类,即变成继承另一个窗体?急!
- 如何使程序不需 Qtintf.dll 支持?
- 请教CppWebBrowser怎么把它的内容存储成图片?
- 如何使不带字库Epson TM300A打印机打出汉字???
- help me
- 建立一个ADO对象时为其确定类型的问题?
在《融会贯通--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 // ......在程序逻辑中利用获取的各类时间值 end;
showmessage(formatdatetime('yyyy-mm-dd hh:tt:ss',now));
date 获得日期