• Delphi获取当前时间


    在开发应用程序时往往需要获取当前系统时间。尽管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比较方便而且灵活。

  • 相关阅读:
    AR路由器web界面每IP限速配置方法
    传输层:TCP 协议
    从需求的角度去理解Linux系列:总线、设备和驱动
    京东的个性化推荐系统
    数据挖掘-MovieLens数据集_电影推荐_亲和性分析_Aprioro算法
    Linux时间子系统之七:定时器的应用--msleep(),hrtimer_nanosleep()
    Linux SPI总线和设备驱动架构之四:SPI数据传输的队列化
    拦截器及 Spring MVC 整合
    表现层 JSP 页面实现
    Controller 层实现
  • 原文地址:https://www.cnblogs.com/kingwangzhen/p/1612583.html
Copyright © 2020-2023  润新知