发分了:怎样将修改系统时间显示?例如“下午 01:12:23”修改后显示为“13:12:23” 如题 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用DateTimeToSystemTime函数函数说明 将TDateTime对象转换为操作系统时间,函数原型如下:DateTimeToSystemTime(System::TDateTime DateTime, _SYSTEMTIME &SystemTime); Delphi 也用实型数表示日期和时间数据。但为了更准确起见,Delphi 特别定义了TDateTime 数据类型,这是一个浮点类型,因为这个类型必须足够宽,使变量能容纳年、月、日、时、分和秒、甚至毫秒。日期值按天计数,从1899-12-30开始,放在TDateTime 类型的整数部分;时间值则位于十进制数的小数部分。TDateTime 不是编译器可直接识别的预定义类型,它在System单元定义:type TDateTime = type Double;使用TDateTime 类型很简单,因为Delphi 为该类型定义了一系列操作函数,表3.3列出了这些函数。表3.3: TDateTime类型系统例程 例程 作用 Now 返回当前日期及时间 Date 返回当前日期 Time 返回当前时间 DateTimeToStr 按缺省格式将日期和时间值转换为字符串;特定格式转换可用 FormatDateTime函数 DateTimeToString 按缺省格式将日期和时间值拷贝到字符串缓冲区 DateToStr 将TDateTime值的日期部分转为字符串 TimeToStr 将TDateTime值的时间部分转为字符串 FormatDateTime 按特定格式将日期和时间值转换为字符串 StrToDateTime 将带有日期和时间信息的字符串转换为TdateTime类型值,如串有误将引发一个异常 StrToDate 将带有日期信息的字符串转换为TDateTime类型格式 StrToTime 将带有时间信息的字符串转换为TDateTime类型格式 DayOfWeek 根据传递的日期参数计算该日期是一星期中的第几天 DecodeDate 根据日期值返回年、月、日值 DecodeTime 根据时间值返回时、分、秒、毫秒值 EncodeDate 组合年、月、日值为TDateTime类型值 EncodeTime 组合时、分、秒、毫秒值为TDateTime类型值 为了显示怎样使用日期时间类型及其相关例程,我建了一个简单的例子TimeNow。该例子在主窗体中设置了一个按钮和一个列表框(ListBox)。开始执行时,程序自动计算并显示当前的时间及日期,以后每次单击按钮 ,显示从程序开始至当前的时间。下面列出了窗体的OnCreate 事件代码:procedure TFormTimeNow.FormCreate(Sender: TObject);begin StartTime := Now; ListBox1.Items.Add (TimeToStr (StartTime)); ListBox1.Items.Add (DateToStr (StartTime)); ListBox1.Items.Add ('Press button for elapsed time');end;第一句中调用了Now 函数,这个函数返回当前的日期和时间,它的值保存在StartTime 变量中,StartTime 变量是全程变量,其声明如下:var FormTimeNow: TFormTimeNow; StartTime: TDateTime;我只添加了第二个声明,第一个是由Delphi自动添加的。默认情况下的代码如下:var Form1: TForm1;窗体名改变后,这个声明被自动更新。使用全程变量实际上不是最好的办法,更好的方法是使用窗体类的私有域,这涉及到面向对象的编程技术。接下来的三个语句向位于窗体左面的列表框添加三个条目,结果见图3.3。列表框中的第一行显示了TDateTime 值的时间部分字符串、第二行显示的是同一值的日期部分,最后一行显示了一个简单的提示。 当用户单击Elapsed 按钮时,上图第三行字符串被程序的计算结果代替:procedure TFormTimeNow.ButtonElapsedClick(Sender: TObject);var StopTime: TDateTime;begin StopTime := Now; ListBox1.Items [2] := FormatDateTime ('hh:nn:ss', StopTime - StartTime);end;这串代码再次计算当前的时间,并显示当前与程序开始之时的时间差,其中用到了其它事件中的计算值,为此不得不把该值存入全程变量。实际上,最好是采用基于类的变量。注意:上面代码中所用ListBox的索引号为2,,而它代表的是第三行的显示输出,其原因是listbox的数据项是从零开始计数的:第一项计为0,第二项为1,第三项为2,依次类推,后面涉及数组时再详细讨论这方面内容。除了调用TimeToStr和 DateToStr 外,以上例子中还用到了功能强大的FormatDateTime 函数(关于格式化参数详见Delphi 帮助文件)。需要注意的是:当时间和日期转换成字符串时,其转换格式取决于Windows 的系统设置。Delphi 从系统中读这些值,并把它们拷贝到SysUtils 单元中声明的几个全程常量中,例如:DateSeparator: Char;ShortDateFormat: string;LongDateFormat: string;TimeSeparator: Char;TimeAMString: string;TimePMString: string;ShortTimeFormat: string;LongTimeFormat: string;ShortMonthNames: array [1..12] of string;LongMonthNames: array [1..12] of string;ShortDayNames: array [1..7] of string;LongDayNames: array [1..7] of string;大部分全程常量与currency 和浮点数格式化有关,在 Delphi 帮助的 Currency and date/time formatting variables 主题下,你可找到完整的清单。注意:Delphi 中有一个DateTimePicker 控件,它提供了选择日期的常用途径,即从一个日历中选择日期。 控制面板——》区域选项——》时间——》时间格式改成 HH:mm: ss注意H一定要为大写 才是24小时制 ◆线程中动态创建控件◆ 谁有TGIFImage 3.0给我发一个? 求救!!求救!!! 怎样在listbox中加入几列,每列包括combobox,和按钮 Devloper Expresse中的TcxTextEdit控件的中文输入问题 用winsock传输文件的问题 如何阻止一个已经运行的程序再次运行? 大家伙拿到一个字符串怎么判断是汉字开头的还是字符开头的啊 那位大哥帮忙,毕业设计就剩这一个问题了!! 在sql server存储过程中获取服务器时间?(100分) 一台计算机中,如何利用SPCOMM怎么实现COM1和COM2的通信 如何把一个字符串转换成BYTE数组啊?
DateTimeToSystemTime(System::TDateTime DateTime, _SYSTEMTIME &SystemTime);
TDateTime = type Double;使用TDateTime 类型很简单,因为Delphi 为该类型定义了一系列操作函数,表3.3列出了这些函数。表3.3: TDateTime类型系统例程 例程 作用
Now 返回当前日期及时间
Date 返回当前日期
Time 返回当前时间
DateTimeToStr 按缺省格式将日期和时间值转换为字符串;特定格式转换可用 FormatDateTime函数
DateTimeToString 按缺省格式将日期和时间值拷贝到字符串缓冲区
DateToStr 将TDateTime值的日期部分转为字符串
TimeToStr 将TDateTime值的时间部分转为字符串
FormatDateTime 按特定格式将日期和时间值转换为字符串
StrToDateTime 将带有日期和时间信息的字符串转换为TdateTime类型值,如串有误将引发一个异常
StrToDate 将带有日期信息的字符串转换为TDateTime类型格式
StrToTime 将带有时间信息的字符串转换为TDateTime类型格式
DayOfWeek 根据传递的日期参数计算该日期是一星期中的第几天
DecodeDate 根据日期值返回年、月、日值
DecodeTime 根据时间值返回时、分、秒、毫秒值
EncodeDate 组合年、月、日值为TDateTime类型值
EncodeTime 组合时、分、秒、毫秒值为TDateTime类型值
为了显示怎样使用日期时间类型及其相关例程,我建了一个简单的例子TimeNow。该例子在主窗体中设置了一个按钮和一个列表框(ListBox)。开始执行时,程序自动计算并显示当前的时间及日期,以后每次单击按钮 ,显示从程序开始至当前的时间。下面列出了窗体的OnCreate 事件代码:procedure TFormTimeNow.FormCreate(Sender: TObject);
begin
StartTime := Now;
ListBox1.Items.Add (TimeToStr (StartTime));
ListBox1.Items.Add (DateToStr (StartTime));
ListBox1.Items.Add ('Press button for elapsed time');
end;第一句中调用了Now 函数,这个函数返回当前的日期和时间,它的值保存在StartTime 变量中,StartTime 变量是全程变量,其声明如下:var
FormTimeNow: TFormTimeNow;
StartTime: TDateTime;我只添加了第二个声明,第一个是由Delphi自动添加的。默认情况下的代码如下:var
Form1: TForm1;窗体名改变后,这个声明被自动更新。使用全程变量实际上不是最好的办法,更好的方法是使用窗体类的私有域,这涉及到面向对象的编程技术。接下来的三个语句向位于窗体左面的列表框添加三个条目,结果见图3.3。列表框中的第一行显示了TDateTime 值的时间部分字符串、第二行显示的是同一值的日期部分,最后一行显示了一个简单的提示。 当用户单击Elapsed 按钮时,上图第三行字符串被程序的计算结果代替:procedure TFormTimeNow.ButtonElapsedClick(Sender: TObject);
var
StopTime: TDateTime;
begin
StopTime := Now;
ListBox1.Items [2] := FormatDateTime ('hh:nn:ss',
StopTime - StartTime);
end;这串代码再次计算当前的时间,并显示当前与程序开始之时的时间差,其中用到了其它事件中的计算值,为此不得不把该值存入全程变量。实际上,最好是采用基于类的变量。注意:上面代码中所用ListBox的索引号为2,,而它代表的是第三行的显示输出,其原因是listbox的数据项是从零开始计数的:第一项计为0,第二项为1,第三项为2,依次类推,后面涉及数组时再详细讨论这方面内容。除了调用TimeToStr和 DateToStr 外,以上例子中还用到了功能强大的FormatDateTime 函数(关于格式化参数详见Delphi 帮助文件)。需要注意的是:当时间和日期转换成字符串时,其转换格式取决于Windows 的系统设置。Delphi 从系统中读这些值,并把它们拷贝到SysUtils 单元中声明的几个全程常量中,例如:DateSeparator: Char;
ShortDateFormat: string;
LongDateFormat: string;
TimeSeparator: Char;
TimeAMString: string;
TimePMString: string;
ShortTimeFormat: string;
LongTimeFormat: string;
ShortMonthNames: array [1..12] of string;
LongMonthNames: array [1..12] of string;
ShortDayNames: array [1..7] of string;
LongDayNames: array [1..7] of string;大部分全程常量与currency 和浮点数格式化有关,在 Delphi 帮助的 Currency and date/time formatting variables 主题下,你可找到完整的清单。注意:Delphi 中有一个DateTimePicker 控件,它提供了选择日期的常用途径,即从一个日历中选择日期。
HH:mm: ss注意H一定要为大写 才是24小时制