启动程序检测当前日期Tnew,读取上次数据库的程序启动时间记录Told和最新剩下工作日WD:
(1)如果Tnew是星期1~5,则Tnew-Tlod获得当前时间差D;
(2)如果Tnew是星期六,则D=Tnew-Told+1;如果是星期天,则D=Tnew-Told+2;
获得当前时差D,然后工作日WD=WD-D就是当前剩下工作日的时间并把剩下工作日wd和此时的程序启动时间写进数据库;这样依赖于服务器的时间。具体实现再考虑。还有其他要求只需改动。

解决方案 »

  1.   

    不好意思,太快了,改动:
    启动程序检测当前日期Tnew,读取上次数据库的程序启动日期记录Told和最新剩下工作日WD:
    (1)如果Tnew是星期1~5,且Told是六或日,则当前时间差D=星期几就几;
         如果Tnew是星期1~5,且Told是星期1~5,则D=Tnew-Told;
    (2)如果Tnew是星期六或日,且Told是星期六或日,则D=5;
         如果Tnew是星期六或日,且Told是星期1~5,则D=Tnew-Told-1或D=Tnew-Told-2;
    获得当前时差D,然后工作日WD=WD-D就是当前剩下工作日的时间并把剩下工作日WD和此时的程序启动时间Tnew写进数据库。
    剩下的bug问题不大,自己改。
    还可以用Timer类实现计数,这个可能更方便。
      

  2.   

    再改,呵呵:(1)如果Tnew是星期1~5,且Told是六或日,则当前时间差D=星期几就几;
       --->
    (1)如果Tnew是星期1~5,且Told是六或日,则当前时间差D=Tnew-Told+1或D=Tnew-Told+2相差的月份日子也应该算进去。
      

  3.   

    不对啊,比如你说的: 如果Tnew是星期1~5,且Told是星期1~5,则D=Tnew-Told;那么这个假如D=28,这28天当中必定有周末,我现在要除去这28天的周末(假设有3个周末一共6天)那么我实际理想中要得到D应该是22才对(因为22个工作日)那么你怎么计算这28天里到底有几个周末呢?
      

  4.   

    是这样的,周末数WK由Tnew和Told得到:
      1.Told当前月的月尾(如9月是30天)和Told之间的周末数WK1:具体方法找API的相关方法吧;
      2.Tnew当前月的月尾(如9月是30天)和Told之间的周末数Wk2;
    WK=WK1+WK2;不过这样的方法很繁琐,你找找API吧,应该由更好的方法,好好解决吧。