年纪大了真的记忆力越来越差,这段时间现在开始摸 XE2了,昨天在项目组中看到编译顺序,今天再想看看在那里就是找不到了!看来想到的东西还是要记录下来!
TDateTime 是 Delphi里常用的类,负责时间的存储,他与C#里面的是有区别的(用了一段时间的C#,回国头来,Delphi有点不习惯了,呵呵),基础类型是Double,其取值范围是 从 12/30/1899开始,比如6:00 AM 12/29/1899就是 -1.25 整数部分就是天,小数部分表示一天的几分之。
1秒钟就是 1/(60*60*24)
1分钟就是 1/(60*24)
1小时就是 1/24
真如大家所想到的,一分钟,一小时,一秒 已经是delphi提供的Const了。
常用的函数包括:
now(),date(),time()year(),DateTimetoStr(),FormatDateTime()replaceDate(),replaceTime()isLeapYear(),EncodeDateTime(),EncodeTime(),EncodeDate()strToDateTime()
其实知道TDateTime本质,问题就很好解决了,用以上函数仅仅为了方便。
比如:
求出前一天
- now()-1;
- IncDay(now(),-1);
- YesterDay(now());
如果是两个时间的组合比如用两个DateTimePick,一个的类型是时间,一个类型是日期。那么如何合成一个有效的时间呢?
- replaceDate(DateTimePick1.dateTime,DateTimePick2.dateTime));
- EncodeDateTime();
- Int(DateTimePick1.dateTime)+(DateTimePick2.dateTime-trunc(DateTimePick2.dateTime));
- Int(DateTimePick1.dateTime)+Frac(DateTimePick2.dateTime);
求出前30分钟
- now()-30*(1/60/24)
- IncMinute(now(),-30)