文档章节

时间与相关类型(2) - TDate、TTime、TTimeStamp

涂孟超
 涂孟超
发布于 2014/09/26 15:35
字数 417
阅读 5
收藏 0
点赞 0
评论 0
//相关函数:
SysUtils.DateTimeToTimeStamp();
SysUtils.TimeStampToDateTime();

SysUtils.TimeStampToMSecs();
SysUtils.MSecsToTimeStamp();

Windows.GetTickCount;
Windows.GetCurrentTime; {GetCurrentTime 和 GetTickCount 一样, 是调用了 GetTickCount.}

 
 
 
 
 

 

 

  

TDate、TTime 与 TDateTime 的尺寸是一样的, 互相转换也不会损失数据; 存在的意义也只是便于理解.

比较有意思的是 TTimeStamp 结构:
TTimeStamp = record
  Time: Integer;      { "毫秒" 表示的时间, 自: 0:0:0:0 }
  Date: Integer;      { "天" 表示的日期, 自: 1/1/0001 }
end;

 
 
 
 
 

 

 

  

{TDateTime 与 TTimeStamp 互相转换的例子} var T: TDateTime; TS: TTimeStamp; begin T := EncodeDateTime(2009, 5, 22, 11, 22, 33, 999); TS := DateTimeToTimeStamp(T); ShowMessage(IntToStr(TS.Time)); //40953999; 当日已逝去了 40953999 毫秒 ShowMessage(IntToStr(TS.Date)); //733549; 自 0001-1-1 的第 733549 天 T := TimeStampToDateTime(TS); ShowMessage(FormatDateTime('yyyy-m-d h:m:s:z', T)); //2009-5-22 11:22:33:999 end;

假如我们要想知道自 0001-1 0:0:0:0 到 2009-5-22 11:22:33:999 总的毫秒数, 根据上面的结果不难算出:
733549*24*60*60*1000 + 40953999 = 63378674553999.

不过这有现成的函数: TimeStampToMSecs、MSecsToTimeStamp.

{TimeStampToMSecs、MSecsToTimeStamp 示例:} 
var
  T: TDateTime;
  TS: TTimeStamp;
  ms: Comp; {这是 TimeStampToMSecs 返回的类型}
begin
  T := EncodeDateTime(2009, 5, 22, 11, 22, 33, 999);
  TS := DateTimeToTimeStamp(T);

  ms := TimeStampToMSecs(TS);
  ShowMessage(FloatToStr(ms)); //63378674553999

  TS := MSecsToTimeStamp(ms);
  T := TimeStampToDateTime(TS);
  ShowMessage(FormatDateTime('yyyy-m-d h:m:s:z', T)); //2009-5-22 11:22:33:999
end;

 
 
 
 
 

 

 

  

另外: GetTickCount 函数可获取从开机时间到当前时间的毫秒数, 结合上面, 可以算出开机时间:

{获取开机时间的例子}
var
  T1: Int64;
  T2,T3: Comp;
  T4: TDateTime;
begin
  T1 := GetTickCount;                               {从开机到现在的毫秒数}
  T2 := TimeStampToMSecs(DateTimeToTimeStamp(Now)); {从 0001-1-1 到当前时间的毫秒数}
  T3 := T2 - T1;                                    {从 0001-1-1 到开机时刻的毫秒数}
  T4 := TimeStampToDateTime(MSecsToTimeStamp(T3));  {从 0001-1-1 到开机时刻的时间}
  ShowMessage(DateTimeToStr(T4));                   {显示开机时间}
end;

 
 
 
 
 

 

 

  

本文转载自:http://www.cnblogs.com/del/archive/2009/05/22/1487274.html

共有 人打赏支持
涂孟超
粉丝 12
博文 2011
码字总数 14107
作品 0
深圳
程序员
采用druid连接池 如下SQL放数据库直接指向可以但代码里面不可以

采用druid连接池 如下SQL放数据库直接指向可以但代码里面不可以,druid-1.0.5.jar: select b.AAA001,b.AAD001 as tpkhcyname,b.AAD002,case when b.AAD002 ='男' then 1 when b.AAD002 ='女'......

无知的小孩
2016/06/12
223
1
oracle,mysql,sqlserver--java对日期字段的操作

最近工作中用到了这三种数据库对日期字段的操作,现做如下总结。 1.数据库字段与java类型的对应关系。 明白这对应关系,我们才能正确的使用PreparedStatement设置参数 2.关于日期字段的几点说...

一不留神
2016/07/24
130
0
String StringBuffer StringBuilder

StringBuffer类是线程安全的,在实现的时候会有大量的代码来处理同步, 如果程序只是单线程的,这样会大大的降低执行的效率。这种情况下面应该考虑使用StringBuilder,它和StringBufer的方法...

的书法上的
2014/07/08
0
0
python 获取网络时间及修改本地时间

本本经常时间错乱,偶闲暇之作,专为同步本本时间。以前有朋友提到日期时间设置里面的有些时间服务器。限于不同的网络,有时候这些时间服务器不一定能用。因此这次选择的是www.baidu.com这个...

长平狐
2012/07/12
909
0
asp.net 实现无刷新计时器

无刷新计时器 ASP.NET AJAX提供了被称为计时器控件的Timer控件。该控件能够指定一个时间间隔和Tick事件,在每一次时间间隔到达之后,将触发其Tick事件。因此,该控件能够定时执行事先指定的一...

瑞不可挡
2011/02/21
0
0
【非凡程序员】 OC第六节课 (枚举,字典,结构体,NSRange,CG类型,NSnumber,空)

#import <Foundation/Foundation.h> #import "Article.h" #import "Person.h" int main(int argc, const char argv[]) { @autoreleasepool { //自动释放池 (半自动) //---------------------......

七月流火zsp
2015/05/19
0
0
solr date 时区 8小时时差问题

初学solr在schema 里面配置并使用sorl的date或者tdate类型,具体类型与使用如下: <field name="tdate_field"type="tdate"indexed="true"stored="true"/><field name="date_field"type="date......

java梦想家01
2015/06/03
0
0
Delphi的一些重要语法

本文转自 xkdcc 51CTO博客,原文链接:http://blog.51cto.com/brantc/116479,如需转载请自行联系原作者 一. 流程控制语句 1.1 Case Statements 二. 类型 2.1 过程类型 用法3的类型表示方法指...

像教授
2017/11/26
0
0
delphi 统计运行时间

DELPHI 一般计时用TTime,但是如果只是为了计算运行时间可以采用GetTickCount t1:=GetTickCount ... .. t2:=GetTickCount t2-t1得到运行时间,毫秒级的。...

boydreaming
2015/12/29
34
0
solr之字段数据类型

solr提供了内建的一些数据类型比如numbers, dates, geo location等类型;详情如下 每种数据类型都有一个Java类来管理。 这里主要讲讲以下几种类型 1. String fields 2. Date fields 3. Numer...

飞翼
2016/12/28
17
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

javascript前端AES加密解密

参考了一下网上的代码加上自已的一些想法,修改,key也可以是中文, 要引入一个aes.js的js文件。 html代码 <html> <head> <title>AES加解密</title> <meta http-equiv="Content-Type"......

oisan_
8分钟前
0
0
MacOS和Linux内核的区别

有些人可能认为MacOS和Linux内核有相似之处,因为它们可以处理类似的命令和类似的软件。甚至有人认为苹果的MacOS是基于linux的。事实上,这两个内核的历史和特性是非常不同的。今天,我们来看...

六库科技
12分钟前
0
0
Vue.js-自定义事件例子

自定义组件的 v-model 2.2.0+ 新增 一个组件上的 v-model 默认会利用名为 value 的 prop 和名为 input 的事件,但是像单选框、复选框等类型的输入控件可能会将 value 特性用于不同的目的。m...

tianyawhl
15分钟前
0
0
mybatis中获取sqlSession的源码分析

0 SqlSessionFactoryBuilder类 SqlSessionFactoryBuilder sqlSessionFacotory=SqlSessionFactoryBuilder().build(reader) public SqlSessionFactory build(Reader reader) { return build(re......

writeademo
16分钟前
0
0
RobotThread.cpp

#include "RobotThread.h"RobotThread::RobotThread(int argc, char** pArgv, const char * topic) :m_Init_argc(argc), m_pInit_argv(pArgv), m_topic(topic){/** ......

itfanr
18分钟前
0
0
防御ddos攻击的常见方法

DDoS攻击是一种特殊形式的拒绝服务攻击。它利用多台已经被攻击者所控制的机器对某一台单机发起攻击,在带宽相对的情况下,被攻击的主机很容易失去反应能力。分布式拒绝服务攻击(DDoS) 是一种...

上树的熊
18分钟前
0
0
Vue全家桶问题合集(很多eslint规范问题)

自己使用Vue全家桶问题合集(很多eslint规范问题) 遇到很多问题一一道来。 1.vue报错 Do not use built-in or reserved HTML elements as component id:header 组件,不能和html标签重复 he...

kisshua
21分钟前
0
0
Spring框架中的设计模式(四)​

Spring框架中的设计模式(四) 本文是Spring框架中使用的设计模式第四篇。本文将在此呈现出新的3种模式。一开始,我们会讨论2种结构模式:适配器和装饰器。在第三部分和最后一部分,我们将讨...

瑞查德-Jack
25分钟前
0
0
如何玩转小程序+公众号?手把手教你JeeWx小程序CMS与公众号关联

随着微信小程序新功能、新入口的不断更新,小程序的商业价值逐步增强,特别是小程序与公众号的深度融合,已经让小程序成为各行业新的营销渠道。Jeewx平台专注小程序的开发,逐步完善小程序生...

Jeecg
31分钟前
0
0
IDEA开发vue.js卡顿

由于新项目使用了vue.js。在执行cnpm install后会在node_modules这个文件下面生成vue的相关依赖文件,这个时候当执行npm run dev命令时,会导致IDEA出现卡死的问题。 解决办法:在idea中设置...

落雪飞声
33分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部