zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    搭建SSM框架之Spring
    手动编写第一个tomcat项目
    电信宽带运营支撑系统
    Java反射
    枚举
    类、枚举与接口
    (总结4)HTML5中如何自定义属性
    (总结3)HTML5中获取元素新增的dom方法以及类名操作
    (总结2)HTML5中新增加的音频/视频标签
    (总结1)HTML5中新增加的表单元素
  • 原文地址:https://www.cnblogs.com/findumars/p/3821293.html
Copyright © 2011-2022 走看看