假设起始时间1959年,结束时间2004年,有一个combobox,里面包括年,季,月,天。如果选择的是年,请生成一个stringlist,里面的string分别是1959,1960,1961,...,2004.如果,选择的是季,那么stringlist里面的string是195903,195906,195909,195912,196003,196006,196009,196012,...,200412,如果选择的是月,那么stringlist里面的string是195901,195902,195903,195904,...200412,如果选择的是天那么stringlist里面的string是每年的每天,比如19590101,19590102,19590103,...,20041231(每个时间都是真实存在的,比如说其中的闰年二月的问题)。
请高手帮忙吖。在线等待答案,在线给分。

解决方案 »

  1.   

    手头没有Delphi,无法测试,应该很好实现,给你个思路:Delphi中TDataTime类型的整数部分就是天数,加减1就等于天数加减1
      

  2.   

    呵呵,看以下是否是你想要实现的:
    var
      tS: tstringlist;
      intYear, intMonth, intDay, i: Integer;
    begin
      try
        tS := tstringlist.Create;    if ComboBox1.Text = '年' then
          for intYear := 1959 to 2004 do
            tS.Add(IntToStr(intYear));    if ComboBox1.Text = '季' then
          for intYear := 1959 to 2004 do
            for i := 1 to 4 do
              tS.Add(IntToStr(intYear * 100 + i * 3));    if ComboBox1.Text = '月' then
          for intYear := 1959 to 2004 do
            for intMonth := 1 to 12 do
              tS.Add(IntToStr(intYear * 100 + intMonth));    if ComboBox1.Text = '天' then
          for intYear := 1959 to 2004 do
            for intMonth := 1 to 12 do
              for intDay := 1 to 31 do
                if intDay <= DaysInMonth(EncodeDate(intYear,intMonth,1)) then
                  tS.Add(IntToStr((intYear * 100 + intMonth) * 10 + intDay));
      except
        tS.Free;
      end;
    end;
      

  3.   

    哦,写错了,天的应该是
    tS.Add(IntToStr((intYear * 100 + intMonth) * 100 + intDay));
      

  4.   

    Delphi中的DateUtils里有很多与日期相关的函数,楼主可认真看一看...
    你这问题不难