用Delphi获取当前系统时间

原创 2001年06月01日 11:27:00

 

在开发应用程序时往往需要获取当前系统时间。尽管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

// ......在程序逻辑中利用获取的各类时间值 

end;

综合以上讨论,获取当前系统时间利用函数GetSystemTime比较方便而且灵活。

用Delphi获取当前系统时间

原文地址:http://tech.sina.com.cn/soft/2000-09-27/775.html 在开发应用程序时往往需要获取当前系统时间。尽管Y2K似乎已经平安过去,但在我们新开发的应用...
  • u013183444
  • u013183444
  • 2013年12月23日 10:25
  • 490

delphi获取系统当前时间

两个方法: 1 直接Now()获取当前时间,它获取的是个TDateTime类型的变量,可以格式化成字符串FormatDateTime('yyyymmddhhnnss', Now()); 2 Get...
  • Xjack2012
  • Xjack2012
  • 2013年11月21日 21:29
  • 1733

Date获得当前时间,后获得年月日的方法,已经不在被经常使用,需要更新了

import java.util.Calendar; public class SysDate { public static void main(String[] args) { Cale...
  • ChineseLion
  • ChineseLion
  • 2017年01月12日 11:16
  • 114

DELPHI下读取与设置系统时钟

在DELPHI下读取与设置系统时钟 很多朋友都想在自己的程序中显示系统时间 这在DELPHI中十分容易 利用DateToStr(Date)及TimeToStr(Time)函数即可实现。 ...
  • lailai186
  • lailai186
  • 2013年08月05日 14:03
  • 3544

用C#获取当前系统时间

24小时制: DateTime dt = DateTime.Now; string dt24 = dt.ToString("yyyy-MM-dd HH:mm:ss"); 12小时制: DateTim...
  • jk082
  • jk082
  • 2013年07月09日 10:17
  • 292

js实时获取当前系统时间

function getTime(){ var date=new Date(); var year=date.getFullYear();//得到当前年份 var month=editTime(...
  • EasyAC
  • EasyAC
  • 2017年04月13日 13:28
  • 861

SQL 获取当前系统时间

SQL 获取当前系统时间
  • yuxiangaaaaa
  • yuxiangaaaaa
  • 2017年05月19日 11:41
  • 1512

30、JS如何获取当前系统时间?

JS如何获取当前系统时间
  • DarrenMJ
  • DarrenMJ
  • 2016年03月31日 10:39
  • 1239

安卓编程之获取系统当前时间

安卓系统的当前时间的表示方式主要分为两种,一种是用一系列单独的整数表示年、月、日、时、分、秒;另一种是用字符串的方式表示,该字符串中包含了年、月、日、时、分、秒。 1 获取一系列单独的表示日期和时间...
  • hou09tian
  • hou09tian
  • 2017年10月11日 22:15
  • 403

delphi 得到执行程序的当前所在完整路径

在Delphi SysUtils 单元中有 ExtractFileDir 与 ExtractFilePath两个类似的函数, 两个函数有以下的区别:  ExtractFilePath 传回值的最...
  • zisongjia
  • zisongjia
  • 2017年04月14日 15:33
  • 1644
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用Delphi获取当前系统时间
举报原因:
原因补充:

(最多只允许输入30个字)