知识大全 Delphi中的时间操作技术

Posted 时间

篇首语:你可以忘掉失败,但不能忘掉教训;你可以忘掉昨天,但不能忘记历史。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Delphi中的时间操作技术相关的知识,希望对你有一定的参考价值。

Delphi中的时间操作技术  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

 在编写应用程序时 我们需要经常与时间和日期打交道 因此经常需要一些对时间的控制技术 在Delphi中 提供了一整套对日期和时间的操作函数 在此 我将详细介绍一下在Delphi中的时间操作技术 希望能对大家有所帮助    一 Delphi中的用于表示时间的类型  首先 看一看在delphi中用于描述时间的几种数据结构 对时间的操作 其实就是对这些结构的操作

  1 TDateTime类型  Delphi中最常用的表示日期时间的数据类型TDateTime类型 和普通的整形数一样 你可以给日期定义一个日期型变量以便在程序中进行操作 TdateTime类型实质上是一个Double型的数 在Delphi中是这样定义TdateTime类型 type TDateTime = type Double 具体的算法是用Double数的整数部分表示日期 以 年 月 日为基准点 以天为单位进行加减 如数字 表示 年 月 日 数字 表示 年 月 日 而小数部分则用来表示时间 其值为欲表示的时间与一整天总时间的比值 如早上 点就是 / = 而早上 : 就是( * + )/( * )=   下面 给出几个例子说明TDateTime类型 与Double类型的交互关系         / /    : :       / /     : :       / /    : :       / /     : :   相信大家一定能自己理解TdateTime与Double之间的转换方法 因此 从根本上对TDateTime的操作与Double完全一样

  2 TTimeStamp 类型  这是一个用来描述日期与时间的一个结构类型 在Delphi中是这样定义的 type TTimeStamp = record Time: Integer; 从午夜 点开始到指定时间的毫秒数 Date: Integer; 以本日为基准到指点日期的天数 end;   和TDateTime相比 可更直观表示高精度的时间 一般用于毫秒级的运算以及用于表示较长的时间

  3 PsystemTime 类型  一个用于WinApi中对时间操作的指针型结构 他的定义为 type PSystemTime = ^TSystemTime; TSystemTime = record wYear: Word; wMonth: Word; wDayOfWeek: Word; wDay: Word; wHour: Word; wMinute: Word; wSecond: Word; wMilliseconds: Word; end;   这个结构多用于调用WinApi操作时使用   在了解了各种时间类型的本质后 相信大家都有一套操作这些类型的时间的想法 不过在Delphi中还提供了一整套用于操作时间的过程函数 这些过程和函数都定义在SysUnit这个单元中 现在就向大家介绍Delphi中相关函数

  二 用于时间操作的函数

  1 Date函数  定义 Date: TDateTime;   作用 返回当前的日期   范例 CurrentDate := Date;

  2 DayOfWeek函数   定义 function DayOfWeek(Date: TDateTime): Integer;   作用 得到指定日期的星期值 返回 ~ 代表周日到周六

  3 IncMouth函数   定义 function IncMonth(const Date: TDateTime; NumberOfMonths: Integer): TDateTime;   作用 求给定的日期Data在NumberOfMonths个月后的日期   范例 Date := IncMonth(date );      如果今天是 则Date 就是

  4 IsLeapYear函数  定义 function IsLeapYear(Year: Word): Boolean;   作用 判断指定的年份是否是闰年   范例 if isLeapYear( ) then ShowMessage( 该年是闰年 );

  5 Now函数  定义 function Now: TDateTime;   作用 用于取得当前的日期时间   范例 CurrentDateTime := Now;

  6 ReplaceDate 过程   定义 procedure ReplaceDate(var DateTime: TDateTime; const NewDate: TDateTime);   作用 使用参数Newdate日期部分替换参数DateTime的日期部分 但不改变时间部分

  7 ReplaceDate 过程   定义 procedure ReplaceTime(var DateTime: TDateTime; const NewTime: TDateTime);   作用 使用参数Newdate时间部分替换参数DateTime的时间部分 但不改变日期部分 如果上述这两个过程一起用 就相当于赋值了

  8 Time函数  定义 function Time: TDateTime;   作用 返回当前的时间   范例 CurrentTime := Time;

  三 各种时间类型之间的转换函数

  1 DateTimeToFileDate函数   定义 DateTimeToFileDate(DateTime: TDateTime): Integer;   作用 将一个TDateTime类型的时间转化为Dos环境中的时间 Dos环境下对时间的访问方法和VCL中的TdateTime类型不一样 在进行文件操作时 为了保持时间的一致性 需要使用DateTimeToFileDate函数进行转化 返回的Integer的值就是Dos下的用于描述时间的值

  2 DateTimeToSystemTime 过程   定义 procedure DateTimeToSystemTime(DateTime: TDateTime; var SystemTime: TSystemTime);   作用 将一个TDateTime类型的时间转换为Win API函数所使用的TSystemTime类型 在使用WinApi函数操纵时间时用到

  3 SystemTimeToDateTime 函数   定义 function SystemTimeToDateTime(const SystemTime: TSystemTime): TDateTime;   作用 将一个在WinApi函数中得到的TSysTemTime类型的数转换为TDateTime类型

  4 DateTimeToTimeStamp 函数和TimeStampToDateTime 函数  定义 DateTimeToTimeStamp(DateTime: TDateTime): TTimeStamp; function TimeStampToDateTime(const TimeStamp: TTimeStamp): TDateTime;   作用 用于在TDataTime类型与TTimeStamp之间进行互相转换 TDataTime 用一个double描绘一个时间 而TTimeStamp则是采用两个整形数分别描述时间 两种类型的区别可参考文章开始处的数据类型描述部分

  5 EncodeDate 函数  定义 function EncodeDate(Year Month Day: Word): TDateTime;   作用 输入年(year) 月(month) 日(day)的值 将该日期返回为TDateTime类型 年的范围为 月份的范围为 日期的范围视当月的情况而定 如果输入的值超出范围 则将产生一个EConvertError错误

  6 DecodeDate 过程  定义 procedure DecodeDate(Date: TDateTime; var Year Month Day: Word);   作用 输入一个TDateTime类型的日期 将其转为年(Year) 月(Month) 日(Day)的值 如果输入值为 或小于 则年月日均为

  7 EncodeTime 函数  定义 EncodeTime(Hour Min Sec MSec: Word): TDateTime;   作用 输入小时(Hour) 分(min) 秒(Sec) 微秒(MSec)的值 返回一个TDateTime类型的时间 该值为一个介于 至 之间的小数 Hour的取值范围为 Min的取值范围为 Sec的取值范围为 MSec的取值范围为 如果输入值超出范围 则产生一个EConvertError 错误

  8 DecodeTime 过程  定义 procedure DecodeTime(Time: TDateTime; var Hour Min Sec MSec: Word);   作用 输入一个时间 将其转换为小时(Hour) 分(min) 秒(Sec) 微秒(MSec)的值

  四 TDateTime类型与字符串型转换函数

  1 DateTimeToStr 函数 DateToStr 函数和TimeToStr函数   定义 function DateTimeToStr(DateTime: TDateTime): string;      function DateToStr(Time: TDateTime): string;      function TimeToStr(Time: TDateTime): string;   作用 将一个TDateTime类型的数转换成字符串 DateTimeToStr转换日期和时间 DateToStr只转换日期 TimeToStr只转换时间 转换后的输出效果为YYYY M D H M S

  2 StrToDateTime函数 StrToDate函数和StrToTime函数   定义 function StrToDateTime(const S: string): TDateTime;      function StrToDate(const S: string): TDateTime;      function StrToTime(const S: string): TDateTime;   作用 将带有日期时间格式的字符串转化成TDateTime 其中S必须是一个有效的字符串 如 YY MM DD HH:MM:SS格式 否则就会触发EConvertError事件 提示错误信息   时间部分的字符串必须是由 ~ 个的数值字串构成 并且采用在Windows区域设置中设置的分隔字符进行分隔 其格式要求符合在Windows区域设定中的设定 其中HH MM(小时 分钟)必须添加 SS(秒)可选 也可以在后面加入 Am和Pm区分上下午 这时候系统将认为采用 小时表示法 否则认为采用 小时表示法   日期部分的格式要求符合Windows区域设置中的短日期格式 也是由 ~ 个的数值字串构成 如果在字符串中只有 个数 则认为是指定了月份和日期 年份采用当前年份 如果在区域设置中采用两位年份的表示方法 则系统将会采用以下方法处理

当前年份 起始年份 基准值 输入年份 输入年份 输入年份

  首先在区域设置中取得两位年份的起始年份 如在区域设置中设两位年份范围为 年 则起始年份为 年 如果这个起始年份为 则认为两位年份表示的都是本世纪 如果其实年份大于 则采用当前年份减去起始年份的值 这个值称为基准值 大于等于这个值则认为事本世纪 否则认为是下世纪 下面给出几个例子说明

  DateTimeToString 过程 FormatDateTime 函数   定义 procedure DateTimeToString(var Result: string; const Format: string; DateTime: TDateTime);      function FormatDateTime(const Format: string; DateTime: TDateTime): string;   作用 通过定义Format字串中的格式得到要输出时间字符串 例如要输出 今天是 年 月 日 星期五 就可以用这两种方法 这两个方法的作用相同 只是一个是通过共享变量取得输出字符串 值在Result中 一个是通过返回值取得输出字符串 DateTime参数是希望输出的日期值 Format由格式标志与附加字符串组合而成 附加字串用 圈起 就像C中的Printf函数 如 今天是 年 月 日 星期五 的Format值就是 今天是 yyyy 年 mm 月 dd 日 dddd yyyy mm dd dddd都是格式标识 各种格式标识的解释如下   d    用一位或两位整数显示日子( - )   dd    用两位整数显示日子 不足两位的用 补足( - )   ddd   按缩略方式显示当前的星期号 如果Windows是英文版 则显示为Mon-Sun 如果       是中文版 则显示同dddd   dddd   按完整方式显示当前的星期号 如Windows是英文版 则显示Monday-SumDay 如        果是中文版 则显示星期一~星期日   ddddd  按区域设置中的短日期格式输出   dddddd 按区域设置中的长日期格式输出   m    用一位或两位整数显示月份( - )   mm    用两位整数显示月份 不足两位的用 补足( - )   mmm   使用缩略方式显示月份名称 英文版显示为Jan Dec 中文版同mmmm   mmmm   使用完整方式显示月份名称 英文版显示为January December 中文版为一月~十       二月   yy    按两位整数方式显示年份( - )   yyyy   按四位整数方式显示年份( - )   h    用一位或两位整数显示小时( - )   hh    用两位整数显示小时 不足两位的用 补足( - )   n    用一位或两位整数显示分钟( - )   nn    用两位整数显示分钟 不足两位的用 补足( - )   s    用一位或两位整数显示秒数( - )   ss    用两位整数显示秒数 不足两位的用 补足( - )   z    用一位至两位整数显示毫秒数( - )   zzz   用三位整数显示毫秒数 不足三位的用 补足( - )   tt    按照区域设置中的格式显示日期   am/pm  用于 小时制的显示 带有AM的则表示从 点~ 点 pm代表从 点~ 点

  与时间相关的变量

  Delphi封装了区域设置的各种信息 并以此定义了一系列的变量 下面介绍与时间相关的部分变量   * DateSeparator Char   日期分隔符 用于分隔年月日     * TimeSeparator Char   时间分隔符 用于分隔小时 分钟 秒   * ShortDateFormat String   区域设置中短日期格式的定义   * LongDateFormat String   区域设置中长日期格式的定义   * ShortTimeFormat String   区域设置中短时间格式的定义   * LongTimeFormat String   区域设置中长时间格式的定义   * TimeAMString String   用来表示上午的字符串   * TimePMString String   用来表示下午的字符串   * ShortMonthNames array[ ] of String;   用于缩略表示月份名称的数组 就是在使用FormatDateTime时显示的mmm标识的字符串   * LongMonthNames array[ ] of String;   用于完整表示月份名称的数组 就是在使用FormatDateTime时显示的mmmm标识的字符串   * ShortDayNames array[ ] of String;   用于缩略表示星期名称的数组 就是在使用FormatDateTime时显示的ddd标识的字符串   * LongDayNames array[ ] of String;   用于完整表示星期名称的数组 就是在使用FormatDateTime时显示的ddd标识的字符串   * TwoDigitYearCenturyWindow Word = ;   在使用两位年份时的起始年份

cha138/Article/program/Delphi/201311/24980

相关参考

知识大全 DELPHI文件、磁盘操作函数

DELPHI文件、磁盘操作函数  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  软件大多都要对文件

知识大全 用Delphi编程模拟鼠标操作

用Delphi编程模拟鼠标操作  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!本实例介绍如何在自己的

知识大全 Delphi的位操作以及嵌入式汇编[1]

Delphi的位操作以及嵌入式汇编[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  每个学习

知识大全 Delphi的位操作以及嵌入式汇编[2]

Delphi的位操作以及嵌入式汇编[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  *Del

知识大全 Delphi的位操作以及嵌入式汇编[3]

Delphi的位操作以及嵌入式汇编[3]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一个把字

知识大全 Delphi深度探索之外壳执行操作记录器

Delphi深度探索之外壳执行操作记录器  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!记录外壳的活

知识大全 在Delphi中使用CreateOleObject方法对WORD文件进行操作

在Delphi中使用CreateOleObject方法对WORD文件进行操作  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让

知识大全 用修改文件时间的方法来加密文件

 [摘要]  本文介绍了在Delphi中利用系统函数和WindowsAPI函数配合Delphi中的DataTimePicker组件来获取和修改文件的时间信息的方法以达到软件信息的简单加密  谈到文件加

知识大全 delphi中的split函数

  delphi中的split函数类似于vb中的split函数  typeuserarray=arrayofstring;cha138/Article/program/Delphi/2013

知识大全 Delphi中的Access技巧小结

Delphi中的Access技巧小结  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  DELPHI