首页 > 其他分享 >Delphi获取当前系统时间(使用API函数GetSystemTime)

Delphi获取当前系统时间(使用API函数GetSystemTime)

时间:2023-11-23 21:40:07浏览次数:35  
标签:GetSystemTime Word 函数 Delphi DateTime API SysTime Now

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

标签:GetSystemTime,Word,函数,Delphi,DateTime,API,SysTime,Now
From: https://www.cnblogs.com/yanglu115/p/17852541.html

相关文章

  • ElasticSearch之cat component templates API
    命令样例如下:curl-XGET"https://localhost:9200/_cat/component_templates?v=true&pretty"--cacert$ES_HOME/config/certs/http_ca.crt-u"elastic:ohCxPH=QBE+s5=*lo7F9"执行结果输出如下:nameversionalias_countm......
  • ElasticSearch之cat anomaly detectors API
    curl-XGET"https://localhost:9200/_cat/ml/anomaly_detectors?v=true&pretty"--cacert$ES_HOME/config/certs/http_ca.crt-u"elastic:ohCxPH=QBE+s5=*lo7F9"执行结果输出如下:curl-XGET"https://localhost:9200/_cat/ml/anomaly_detectors......
  • delphi 时间格式化,动态显示时间,显示最新时间
    动态显示时间(需要Timer控制的支持,以下代码放到Timer事件中)Label1.Caption:=FormatDateTime('yyyy-mm-dd  hh:mm:ss',Now);显示当前时间(放在窗体的OnShow事件中)edit1.text:=FormatDateTime('YYYYMMDDHHMMSSZZZ',now());时间格式化Windows中的时间格式还真不少,什么......
  • 全屏API及vue3 hook封装
    最近在一个大屏项目遇到一个需求:用户可以通过一个按钮,触发页面部分模块全屏。通过以下API可以实现:Element.requestFullscreen()方法用于发出异步请求使元素进入全屏模式。且全屏状态变化会触发以下事件:fullscreenchange事件会在浏览器进入或退出全屏模式后立即触发。基于......
  • CreateIndex API执行流程_milvus源码解析
    CreateIndexAPI执行流程源码解析milvus版本:v2.3.2整体架构:CreateIndex的数据流向:1.客户端sdk发出CreateIndexAPI请求。importnumpyasnpfrompymilvusimport(connections,FieldSchema,CollectionSchema,DataType,Collection,)num_entities,......
  • CreateIndex API执行流程_milvus源码解析
    CreateIndexAPI执行流程源码解析milvus版本:v2.3.2整体架构:CreateIndex的数据流向:1.客户端sdk发出CreateIndexAPI请求。importnumpyasnpfrompymilvusimport(connections,FieldSchema,CollectionSchema,DataType,Collection,)num_entities,......
  • ES插入报错 索引只读:blocked by: [FORBIDDEN/12/index read-only / allow delete (ap
     ES插入报错:reason:ElasticsearchException[Elasticsearchexception[type=cluster_block_exception,reason=blockedby:[FORBIDDEN/12/indexread-only/allowdelete(api)];]]   这种大多都是因为磁盘空间不足了超过设置的阈值,一般80%所以索引变成只读了,要把空......
  • OpenHarmony之NAPI框架介绍
     张志成诚迈科技高级技术专家 NAPI是什么NAPI的概念源自Nodejs,为了实现javascript脚本与C++库之间的相互调用,Nodejs对V8引擎的api做了一层封装,称为NAPI。可以在Nodejs官网(https://nodejs.org/dist/latest-v20.x/docs/api/n-api.html)上查看各种NAPI接口定义说明。可以......
  • 使用Python调用API接口获取小红书笔记详情数据
    本文将详细介绍如何使用Python编程语言调用小红书API接口,以获取小红书笔记的详情数据。我们将从以下几个方面展开讨论:1)API接口简介;2)Python环境准备;3)API密钥获取;4)使用Requests库发送API请求;5)解析响应数据;6)异常处理与错误排查。一、API接口简介API(应用程序编程接口)是一种......
  • MFC-ODBC API动态连接配置数据库
    一、ODBC管理器介绍在Window中,ODBC数据远管理器有6个标签:用户DSN、系统DSN、文件DSN、驱动程序、跟踪、连接池,通常情况下,使用用户DSN或者系统DSN,这里主要了解用户DSN和系统DSN即可。用户DSN:ODBC用户数据源存储了如何与指定的数据库提供者连接的信息,只有当前用户可见。系统DSN:O......