这几天因为自己要学习编写一个小程序中要用到一些时间处理。就在网上搜集一些教材学习到一般的应用,做个笔记,加深印象。

用上Delphi中相应的函数,Delphi的时间处理起来还是很容易的。

Delphi的时间类型是TDateTime,其实是一个Double.这个double的整数部分,就是从很久很久以前的某一天算起的天数。小数就是时间部分了。因为很远很远的一天是从0点开始的。所以小数部分的0值也是对应着一天的开始0点0分0秒。

用函数DateTimetoStr(0)就可以看到那神秘很远的一天了。这其中用数字0做参数,表明TDateTime是double.同理也可以用TimetoStr(0),TimetoStr(0.5),看一看时间的转换。

函数:
DateTimetoStr()
DatetoStr()
TimetoStr()

strtotime('10:00:00)
strtodate('2006-2-8')
strtodatetime('2006-2-8 10:00:00')
注意其中日期时间显示的成文本时候的格式。

转换成文本时候,还有另外一个函数:
FormatDatetime(Formatestring,TDateTime):String
返回值依然是格式化好的string.倒是Formatstring是一个值得研究。
其有用的格式字符:mmmm表示月份, dd表示日, yyyy表示年, hh:mm:ss 是时间(其后用AM/PM 有无来切换12/24小时制)。当d单独写且超过三个ddd,则表示星期。除月日,其它各项间要用','间隔。里面可加用'""'包含的字符,会原样添加到返回值中。

Delphi help 中的一个例子:
S := FormatDateTime('"The meeting is on " ddd, mmmm d, yyyy, " at " hh:mm AM/PM',Now);
则s值为:The meeting is on Wednesday, February 15, 1995 at 2:30 PM

Now(),返回当前系统时间的TDateTime

既然TDateTime是一个double,相互之间是可以直接进行运算的。当然考虑到时间的实际意义,只能进行加和减的运算。比如:Now+1,就表示第二天的这个时候。Now-0.125表示3小时以前。

Now()是用来取系统时间,Win32的时间与delphi的TDateTime的格式还是不同的。
win32时间格式在delphi中定义为:TSystemTime,在delphi中我们可以不用直接处理它。例如now函数在取时间的时候已经帮我们自动转化成TDateTime格式了。

Now()的反向操作,改写系统时间。
用到一个win32 API函数:SetLocalTime(TSystemTime)
而TDateTime到TSystemTime的转换是用DateTimetoSystemTime(TDateTime,TSystemTime)
要注意的是其参数,而不是用函数的返回值得到TSystemTime。

Delphi的时间处理的更多相关文章

  1. Delphi DateUtils时间单元

    Uses DateUtils //时间单元,非常有用. 记得引用这个单元,不然不能用. CompareDate 比较两个日期时间值日期部分的大小 CompareDateTime 比较两个日期时间值的大 ...

  2. Delphi日期时间 UNIX

    Delphi日期时间,就是常见的 2014-05-02 10:37:35 --------------------------------------------------------------- ...

  3. Delphi的时间与字符串函数代码示例

    [delphi] view plaincopyprint? SysUtils.StrToDate(); SysUtils.StrToDateDef(); SysUtils.TryStrToDate() ...

  4. Delphi 日期时间函数

    DateUtils.IncYear();DateUtils.IncMonth();DateUtils.IncWeek();DateUtils.IncDay();DateUtils.IncHour(); ...

  5. Delphi 设置时间格式

    // 设置WINDOWS系统的短日期的格式SetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_SSHORTDATE, 'yyyy-MM-dd'); Applicat ...

  6. Delphi的时间 x87 fpu control word 精度设置的不够

    在win7 64位系统下, 一个DELPHI写的DLL注入一个C语言程序后. 出现非常奇怪的浮点数相加出错的情况. (注: 在XP系统下是正常的).比如: 40725.0001597563 + 0.7 ...

  7. Delphi 获取时间的年月日

    procedure TFrmLltj.FormActivate(Sender: TObject); var   Present: TDateTime;   Year, Month, Day, Hour ...

  8. Delphi 判断时间是否合法 -IsValidDateTime、IsValidDate、IsValidTime、IsValidDateDay

    DateUtils.IsValidDateTimeDateUtils.IsValidDateDateUtils.IsValidTimeDateUtils.IsValidDateDayDateUtils ...

  9. delphi 最全日期格式_DateUtils时间单元说明

    DateUtils时间单元说明 CompareDate 函数 比较两个日期时间值日期部分的大小 CompareDateTime 函数 比较两个日期时间值的大小 CompareTime 函数 比较两个日 ...

随机推荐

  1. 迭代器、泛型和增强For

    Iterator hasNext  next Iterator 迭代器 Collection提供了一个遍历集合的通用方式,迭代器(Iterator). 获取迭代器的方式是使用Collection定义的 ...

  2. Mongodb shell 基本操作

    /opt/mongodb-2.6.6/bin > mongo 1. 查询本地所有数据库名称> show dbs 2. 切换至指定数据库环境(若无指定的数据库,则创建新的库)> use ...

  3. Android SharedPreferences使用以及原理详解

    SharedPreferences的使用非常简单,能够轻松的存放数据和读取数据.SharedPreferences只能保存简单类型的数据,例如,String.int等.一般会将复杂类型的数据转换成Ba ...

  4. 我爱我家:我为什么选择AppCan?

    10年前,说起手机,大家联想到的词大概是:电话.短信.QQ.拍照,以及贪吃蛇等有限的几个小游戏.而如今,手机毫无疑问已经成为人们生活中不可或缺的部分.这是一个神奇的东西:通讯工具,外卖神器,游戏机,移 ...

  5. 如何使用 Microsoft Azure Media Services 现场直播,(Live Streaming) 直播流媒体系统

    不久之前,微软公司宣布了 Microsoft Azure Media Services 实时直播服务 ( Live ) 开始进入技术预览阶段,公开接受用户测试. 而这些实时直播服务其实早已被 NBC ...

  6. libmemcached upcoming ISO C++ standard, C++0x

    在编译我的小程序的时候,触发了一个编译错误,程序中使用了libmemcached,错误如下: 1 2 3 4 5 6 7 8 9 In file included from /usr/lib/gcc/ ...

  7. UIButton之Block回调

    本文主要介绍了两种改写UIButton的点击事件方法——继承UIButton跟给UIButton添加一个分类.附代码 方法一:继承UIButton UIButtonBlock.h文件 如下 #impo ...

  8. 浅析Objective-C字面量

    编写Objective-C程序时,总会用到某几个类,它们属于Foundation框架.虽然从技术上来说,不用Foundation框架也能写出Objective-C代码,但实际上却经常要用到此框架.这几 ...

  9. mysql取整,小数点处理函数floor(), round()

    mysql数值处理函数floor与round    在mysql中,当处理数值时,会用到数值处理函数,如有一个float型数值2.13,你想只要整数2,那就需要下面的函数floor与round.   ...

  10. EntityFramework.Extended扩展用法

    EntityFramework.Extended是一个基于EntityFramework框架 IQueryable类型的扩展方法,包括Update.Delete. 它的优点就是 修改删除操作不仅仅有I ...