• TDateTimePicker中Date与Time的误导


    一、DateTime,Date,Time存储方式本质上也是以double来存储的。用整数部分表示日期,小数部分表示时间。可看我另外一篇“access 中“日期/时间”存储方式 ”

    TDateTimePicker有上面三种属性。

    二、TDateTimePicker的kind属性设置为dtkDate用于显示日期,第二个kind设置为dtkTime用于显示时间,但是不能同时显示的。

    三、用DateTimePicker.Date和Time的值要注意:取Date要用trunc取整得到,取Time要用frac取小数得到。

    四、DateTimePicker的Date,Time,DateTime三者是相等的。

    下面这个例子看一下:

    新建一个工程放入一个TDateTimePicker、两个TEdit、两个按钮,并设置两个按钮的事件代码如下

    {DateTimePicker1的日期和时间设置为:2010-03-26 13:00:00}
    procedure TForm1.Button1Click(Sender: TObject);  //取出Date部分,并判断它的值
    var
      t:TDateTime;

    begin
      t:= DateTimePicker1.Date;

      Edit1.Text:=DateTimeToStr(t);
    end;


    procedure TForm1.Button2Click(Sender: TObject);    //判断取Date和DateTime是否相等

    begin

       if DateTimePicker1.Time = DateTimePicker1.DateTime then
          begin
            Edit2.Text:='相等'
          end
        else
          begin
            Edit2.Text:='不相等';
          end;

    end;

    可以看到虽然我们的代码中只取了Date或是Time,但是它们的值和DateTime的值是相等的。

    所以如果你用如下代码

    {DateTimePicker1的日期和时间设置为:2010-03-26 13:00:00}
    procedure TForm1.Button1Click(Sender: TObject);  //取出Date部分,并判断它的值
    var
      t:TDateTime;

    begin
      t:= DateTimePicker1.Date + DateTimePicker1.Time;

      //t:= trunc(DateTimePicker1.Date)+frac(DateTimePicker1.Time);//这才是等到DateTimePicker1的日期和时间

       Edit1.Text:=DateTimeToStr(t);
    end;

    结果是:2120-6-21 2:00:00

    相当于是把DateTimePicker1的时间和日期乘以2了,并不是说DateTimerPicker的Date+Time就和DateTime相等。

    而用 trunc取整数部分 加上 frac取小数部分 函数,两者取出来的和就会和原来相等。

    参考:

    http://ifso.iteye.com/blog/1752420

  • 相关阅读:
    ****阿里云使用+快速运维总结(不断更新)
    Linux 标准目录结构
    linux awk命令
    反射型 DDoS 攻击的原理和防范措施
    容器平台选型的十大模式:Docker、DC/OS、K8S 谁与当先?
    谈谈数据库的跨机房容灾-网易云
    前端 支持 超大上G,多附件上传
    java 支持 超大上G,多附件上传讨论
    java 支持 超大上G,多附件上传分享
    java 支持 超大上G,多附件上传功能
  • 原文地址:https://www.cnblogs.com/findumars/p/3821293.html
Copyright © 2020-2023  润新知