delphi提供了三个不同的取当前时间(日期)的函数。分别是:
Now(),Time(),CurrentYear().
只取年份,但取出的值分别是:
2004,1899,1905。怎么想也不对。请高手指点!

解决方案 »

  1.   

    Now函数取出的是当前的日期和时间,你可以分别用DateToStr和TimeToStr来格式化得到日期和时间。
    Time取出的是当前的时间,由于它的返回值是TDateTime的,而它只取出的是时间,所以日期为1899-12-30号。
    而CurrentYear取出的是年份,为2004。
      

  2.   

    你可以这样作试验:
    Edit1.text := DateToStr(Now);  //2004-6-22
    Edit1.text := TimeToStr(Now);  //9:37:24
    Edit1.text := DateToStr(Time);  //1899-12-30 这里是由于Time并没有取出日期。
    Edit1.text := TimeToStr(Time);  //9:37:57
    Edit1.text := IntToStr(CurrentYear);  //2004
      

  3.   

    CurrentYear()怎么可能是1905呢?
      

  4.   

    ==首先谈谈CurrentYear,它是最没有可能出错的,你检查一下,在我的机子上好好的。
    ==然后谈谈Time,如果你使用TimeToStr(Time)跟踪一下的话,结果你自己就明白了,它的显示从时开始依次是分、秒,根本就没有年。注意:Time和Date是不同的,尽管它们都属于TDateTime类型。你修改Time到Date,然后用YearOf,就没错了。
    ==最后Now提供的是从年开始依次是月...,当然不会有错喽。
      

  5.   

    这是一个基础中的基础问题,相信DELPHI版90%以上的人都知道!!
      

  6.   

    如果取日期,用Date;取时间,用time;如果日期和时间都取,那就用now
    Mytext:string;
    用法为:
    MyText:=formatDatetime('yyyy-mm-dd',Date);  显示格式为:年-月-日
    MyText:=formatDatetime('hh:nn:ss',time);  显示格式为:小时:分钟:秒钟
    MyText:=formatDatetime('yyyy-mm-dd hh:nn:ss',now);显示格式为:年-月-日 小时:分钟:秒钟你仅仅需要年份,这样就行
    MyText:=formatDatetime('yyyy',Date);