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

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

http://blog.csdn.net/yanjiaye520/article/details/6259153

时间: 2024-12-11 11:49:37

Delphi获取当前系统时间(使用API函数GetSystemTime)的相关文章

java中获取当前系统时间,并与字符串相互转换格式,或者转化成秒数,天数等整数

转换成秒数 Date类有一个getTime()可以换回秒数,例如: public class DateToSecond { public static void main(String[] args) { Date date = new Date(System.currentTimeMillis()); System.out.println(date.getTime()); } } 与字符串格式相互转换 一. 获取当前系统时间和日期并格式化输出: import java.util.Date; i

Java 获取当前系统时间方法比较

转载: http://blog.csdn.net/zzjjiandan/article/details/8372617 一. 获取当前系统时间和日期并格式化输出: import java.util.Date;import java.text.SimpleDateFormat; public class NowString {public static void main(String[] args) { SimpleDateFormat df = new SimpleDateFormat("yy

JAVA中获取当前系统时间及格式转换

JAVA中获取当前系统时间 一. 获取当前系统时间和日期并格式化输出: import java.util.Date;import java.text.SimpleDateFormat; public class NowString {public static void main(String[] args) { SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式System.out.pr

javascript——获取当前系统时间

输出当前系统时间: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>获取当前系统时间</title> <script> window.onload = function(){ // 获取body元素 var oBody = document.body; // 设置定时器,每隔1秒执行一次该函数

JAVA中获取当前系统时间

获取当前系统时间和日期并格式化输出: import java.util.Date; import java.text.SimpleDateFormat; public class NowString { public static void main(String[] args) { SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式 System.out.println(df.forma

关于时间的操作(Java版)——获取距离系统时间N天后的日期时间信息

import java.util.Calendar; import java.util.TimeZone; public class Test { /** * 获取距离系统时间N天后的日期时间信息 * * @author GaoHuanjie */ public String getDateAfterNdays(int days){ Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("GMT+8")); cale

【Linux学习】 写一个简单的Makefile编译源码获取当前系统时间

打算学习一下Linux,这两天先看了一下gcc的简单用法以及makefile的写法,今天是周末,天气闷热超市,早晨突然发现住处的冰箱可以用了,于是先出去吃了点东西,然后去超市买了一坨冰棍,老冰棍居多,5毛钱一根,还有几根1.5的. 嗯 接着说gcc的事 先把源代码贴上来 //gettime.h #ifndef _GET_TIME_H_ #define _GET_TIME_H_ void PrintCurrentTime(); #endif //gettime.c #include <stdio.

java获取当前系统时间

一. 获取当前系统时间和日期并格式化输出: import java.util.Date;import java.text.SimpleDateFormat; public class GetCurrentTime { public static void main(String[] args)    {           SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式       

JAVA中获取当前系统时间的两种方法

一. 获取当前系统时间和日期并格式化输出: import java.util.Date;import java.text.SimpleDateFormat; public class NowString {public static void main(String[] args) { SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式System.out.println(df.forma